Skip to content

Commit e882b5e

Browse files
IliasKhaniliaskhaisra-fel
authored
[SQL] added useIdentity parameter (#20518)
* added useIdentity parameter * added change comments * added validation * indentation * added helm messages * Update ChangeLog.md Co-authored-by: Ilias Khan <[email protected]> Co-authored-by: Yeming Liu <[email protected]>
1 parent 9337ebd commit e882b5e

10 files changed

+97
-15
lines changed

src/Sql/Sql/Auditing/AuditingHelpMessages.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public static class AuditingHelpMessages
6262

6363
public const string AsJobHelpMessage = "Run cmdlet in the background";
6464

65+
public const string UseIdentityMessage = "Indicates whether to use managed identity or not. It is required when you want to use managed identity while target storage is not behind firewall.";
66+
6567
public const string AuditActionHelpMessage =
6668
@"The set of audit actions.
6769
The supported actions to audit are:

src/Sql/Sql/Auditing/Cmdlet/SetAzSqlDatabaseAudit.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,13 @@ public class SetAzSqlDatabaseAudit : SqlDatabaseAuditCmdlet
109109
HelpMessage = AuditingHelpMessages.PassThruHelpMessage)]
110110
public SwitchParameter PassThru { get; set; }
111111

112+
[Parameter(
113+
Mandatory = false,
114+
HelpMessage = AuditingHelpMessages.UseIdentityMessage)]
115+
[ValidateSet(SecurityConstants.True, SecurityConstants.False, IgnoreCase = true)]
116+
[ValidateNotNullOrEmpty]
117+
public string UseIdentity { get; set; }
118+
112119
public Guid RoleAssignmentId { get; set; } = default(Guid);
113120

114121
protected override DatabaseAuditModel ApplyUserInputToModel(DatabaseAuditModel model)
@@ -178,6 +185,12 @@ protected override DatabaseAuditModel ApplyUserInputToModel(DatabaseAuditModel m
178185
model.WorkspaceResourceId = WorkspaceResourceId;
179186
}
180187

188+
if (UseIdentity != null)
189+
{
190+
model.UseIdentity = UseIdentity.ToString().ToUpper() == SecurityConstants.True ?
191+
BoolType.True : BoolType.False;
192+
}
193+
181194
return model;
182195
}
183196

src/Sql/Sql/Auditing/Cmdlet/SetSqlServerAuditCmdlet.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ public abstract class SetSqlServerAuditCmdlet<ServerAuditPolicyType, ServerAudit
7676
HelpMessage = AuditingHelpMessages.PassThruHelpMessage)]
7777
public SwitchParameter PassThru { get; set; }
7878

79+
[Parameter(
80+
Mandatory = false,
81+
HelpMessage = AuditingHelpMessages.UseIdentityMessage)]
82+
[ValidateSet(SecurityConstants.True, SecurityConstants.False, IgnoreCase = true)]
83+
[ValidateNotNullOrEmpty]
84+
public String UseIdentity { get; set; }
85+
7986
public Guid RoleAssignmentId { get; set; } = default(Guid);
8087

8188
protected override ServerAuditModelType ApplyUserInputToModel(ServerAuditModelType model)
@@ -117,7 +124,14 @@ protected override ServerAuditModelType ApplyUserInputToModel(ServerAuditModelTy
117124

118125
if (WorkspaceResourceId != null)
119126
{
120-
model.WorkspaceResourceId = WorkspaceResourceId;
127+
model.LogAnalyticsTargetState = LogAnalyticsTargetState == SecurityConstants.Enabled ?
128+
AuditStateType.Enabled : AuditStateType.Disabled;
129+
}
130+
131+
if (UseIdentity != null)
132+
{
133+
model.UseIdentity = UseIdentity.ToString().ToUpper() == SecurityConstants.True ?
134+
BoolType.True : BoolType.False;
121135
}
122136

123137
return model;

src/Sql/Sql/Auditing/Model/ServerDevOpsAuditModel.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
namespace Microsoft.Azure.Commands.Sql.Auditing.Model
2020
{
2121
public enum AuditStateType { Enabled, Disabled };
22+
public enum BoolType { False, True };
2223

2324
public class ServerDevOpsAuditModel
2425
{
@@ -40,6 +41,8 @@ public class ServerDevOpsAuditModel
4041

4142
public string WorkspaceResourceId { get; set; }
4243

44+
public BoolType UseIdentity { get; set; }
45+
4346
[Hidden]
4447
internal bool? IsAzureMonitorTargetEnabled { get; set; }
4548

src/Sql/Sql/Auditing/Services/SqlAuditAdapter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ internal virtual void PolicizeStorageInfo(AuditModelType model, ProxyResource po
349349
dynamicPolicy.StorageEndpoint = GetStorageAccountEndpoint(storageAccountName);
350350
dynamicPolicy.StorageAccountSubscriptionId = storageAccountSubscriptionId;
351351

352-
if (AzureCommunicator.IsStorageAccountInVNet(model.StorageAccountResourceId))
352+
if (AzureCommunicator.IsStorageAccountInVNet(model.StorageAccountResourceId) || model.UseIdentity == BoolType.True)
353353
{
354354
Guid? principalId = Communicator.AssignServerIdentityIfNotAssigned(model.ResourceGroupName, model.ServerName);
355355
AzureCommunicator.AssignRoleForServerIdentityOnStorageIfNotAssigned(model.StorageAccountResourceId, principalId.Value, RoleAssignmentId);

src/Sql/Sql/ChangeLog.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21-
* Added `isManagedIdentityInUse` parameter for `Get-AzSqlServerMSSupportAudit`
22-
* Added `PreferredEnclaveType` parameter to `NewAzureSqlDatabase`, `GetAzureSqlDatabase` and `SetAzureSqlDatabase` cmdlet
21+
* Added a parameter named `UseIdentity` for `Set-AzSqlServerAudit`, `Set-AzSqlDatabaseAudit`, `Set-AzSqlServerMSSupportAudit`
22+
* Added `IsManagedIdentityInUse` property to the output of `Get-AzSqlServerMSSupportAudit`
23+
* Added `PreferredEnclaveType` parameter to `New-AzSqlDatabase`, `Get-AzSqlDatabase` and `Set-AzSqlDatabase` cmdlet
2324

2425
## Version 4.1.0
2526
* Added new cmdlets for CRUD operations on SQL server IPv6 Firewall rules

src/Sql/Sql/Common/SecurityConstants.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public class SecurityConstants
4545

4646
public const string Enabled = "Enabled";
4747
public const string Disabled = "Disabled";
48+
public const string True = "TRUE";
49+
public const string False = "FALSE";
4850

4951
// Masking functions
5052
public const string NoMasking = "NoMasking";

src/Sql/Sql/help/Set-AzSqlDatabaseAudit.md

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ Set-AzSqlDatabaseAudit [-AuditActionGroup <AuditActionGroups[]>] [-AuditAction <
1919
[-PredicateExpression <String>] [-BlobStorageTargetState <String>] [-StorageAccountResourceId <String>]
2020
[-StorageKeyType <String>] [-RetentionInDays <UInt32>] [-EventHubTargetState <String>]
2121
[-EventHubName <String>] [-EventHubAuthorizationRuleResourceId <String>] [-LogAnalyticsTargetState <String>]
22-
[-WorkspaceResourceId <String>] [-PassThru] [-ResourceGroupName] <String> [-ServerName] <String>
23-
[-DatabaseName] <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
22+
[-WorkspaceResourceId <String>] [-PassThru] [-UseIdentity <String>] [-ResourceGroupName] <String>
23+
[-ServerName] <String> [-DatabaseName] <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
24+
[-Confirm] [<CommonParameters>]
2425
```
2526

2627
### DatabaseObjectParameterSet
@@ -29,7 +30,7 @@ Set-AzSqlDatabaseAudit [-AuditActionGroup <AuditActionGroups[]>] [-AuditAction <
2930
[-PredicateExpression <String>] [-BlobStorageTargetState <String>] [-StorageAccountResourceId <String>]
3031
[-StorageKeyType <String>] [-RetentionInDays <UInt32>] [-EventHubTargetState <String>]
3132
[-EventHubName <String>] [-EventHubAuthorizationRuleResourceId <String>] [-LogAnalyticsTargetState <String>]
32-
[-WorkspaceResourceId <String>] [-PassThru] -DatabaseObject <AzureSqlDatabaseModel>
33+
[-WorkspaceResourceId <String>] [-PassThru] [-UseIdentity <String>] -DatabaseObject <AzureSqlDatabaseModel>
3334
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
3435
```
3536

@@ -379,6 +380,21 @@ Accept pipeline input: False
379380
Accept wildcard characters: False
380381
```
381382
383+
### -UseIdentity
384+
Indicates whether to use managed identity or not. It is required when you want to use managed identity while target storage is not behind firewall.
385+
386+
```yaml
387+
Type: System.String
388+
Parameter Sets: (All)
389+
Aliases:
390+
391+
Required: False
392+
Position: Named
393+
Default value: None
394+
Accept pipeline input: False
395+
Accept wildcard characters: False
396+
```
397+
382398
### -WorkspaceResourceId
383399
The workspace ID (resource ID of a Log Analytics workspace) for a Log Analytics workspace to which you would like to send Audit Logs. Example: /subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/viruela2
384400

src/Sql/Sql/help/Set-AzSqlServerAudit.md

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ Set-AzSqlServerAudit [-AuditActionGroup <AuditActionGroups[]>] [-PredicateExpres
1919
[-StorageKeyType <String>] [-RetentionInDays <UInt32>] [-BlobStorageTargetState <String>]
2020
[-StorageAccountResourceId <String>] [-EventHubTargetState <String>] [-EventHubName <String>]
2121
[-EventHubAuthorizationRuleResourceId <String>] [-LogAnalyticsTargetState <String>]
22-
[-WorkspaceResourceId <String>] [-PassThru] [-ResourceGroupName] <String> [-ServerName] <String> [-AsJob]
23-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
22+
[-WorkspaceResourceId <String>] [-PassThru] [-UseIdentity <String>] [-ResourceGroupName] <String>
23+
[-ServerName] <String> [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
24+
[<CommonParameters>]
2425
```
2526

2627
### ServerObjectParameterSet
@@ -29,8 +30,8 @@ Set-AzSqlServerAudit [-AuditActionGroup <AuditActionGroups[]>] [-PredicateExpres
2930
[-StorageKeyType <String>] [-RetentionInDays <UInt32>] [-BlobStorageTargetState <String>]
3031
[-StorageAccountResourceId <String>] [-EventHubTargetState <String>] [-EventHubName <String>]
3132
[-EventHubAuthorizationRuleResourceId <String>] [-LogAnalyticsTargetState <String>]
32-
[-WorkspaceResourceId <String>] [-PassThru] -ServerObject <AzureSqlServerModel> [-AsJob]
33-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
33+
[-WorkspaceResourceId <String>] [-PassThru] [-UseIdentity <String>] -ServerObject <AzureSqlServerModel>
34+
[-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
3435
```
3536

3637
## DESCRIPTION
@@ -348,6 +349,21 @@ Accept pipeline input: False
348349
Accept wildcard characters: False
349350
```
350351
352+
### -UseIdentity
353+
Indicates whether to use managed identity or not. It is required when you want to use managed identity while target storage is not behind firewall.
354+
355+
```yaml
356+
Type: System.String
357+
Parameter Sets: (All)
358+
Aliases:
359+
360+
Required: False
361+
Position: Named
362+
Default value: None
363+
Accept pipeline input: False
364+
Accept wildcard characters: False
365+
```
366+
351367
### -WorkspaceResourceId
352368
The workspace ID (resource ID of a Log Analytics workspace) for a Log Analytics workspace to which you would like to send Audit Logs. Example: /subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/viruela2
353369

src/Sql/Sql/help/Set-AzSqlServerMSSupportAudit.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ Changes the Microsoft support operations auditing settings of an Azure SQL serve
1717
```
1818
Set-AzSqlServerMSSupportAudit [-BlobStorageTargetState <String>] [-StorageAccountResourceId <String>]
1919
[-EventHubTargetState <String>] [-EventHubName <String>] [-EventHubAuthorizationRuleResourceId <String>]
20-
[-LogAnalyticsTargetState <String>] [-WorkspaceResourceId <String>] [-PassThru] [-ResourceGroupName] <String>
21-
[-ServerName] <String> [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
22-
[<CommonParameters>]
20+
[-LogAnalyticsTargetState <String>] [-WorkspaceResourceId <String>] [-PassThru] [-UseIdentity <String>]
21+
[-ResourceGroupName] <String> [-ServerName] <String> [-AsJob] [-DefaultProfile <IAzureContextContainer>]
22+
[-WhatIf] [-Confirm] [<CommonParameters>]
2323
```
2424

2525
### ServerObjectParameterSet
2626
```
2727
Set-AzSqlServerMSSupportAudit [-BlobStorageTargetState <String>] [-StorageAccountResourceId <String>]
2828
[-EventHubTargetState <String>] [-EventHubName <String>] [-EventHubAuthorizationRuleResourceId <String>]
29-
[-LogAnalyticsTargetState <String>] [-WorkspaceResourceId <String>] [-PassThru]
29+
[-LogAnalyticsTargetState <String>] [-WorkspaceResourceId <String>] [-PassThru] [-UseIdentity <String>]
3030
-ServerObject <AzureSqlServerModel> [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
3131
[<CommonParameters>]
3232
```
@@ -268,6 +268,21 @@ Accept pipeline input: False
268268
Accept wildcard characters: False
269269
```
270270
271+
### -UseIdentity
272+
Indicates whether to use managed identity or not. It is required when you want to use managed identity while target storage is not behind firewall.
273+
274+
```yaml
275+
Type: System.String
276+
Parameter Sets: (All)
277+
Aliases:
278+
279+
Required: False
280+
Position: Named
281+
Default value: None
282+
Accept pipeline input: False
283+
Accept wildcard characters: False
284+
```
285+
271286
### -WorkspaceResourceId
272287
The workspace ID (resource ID of a Log Analytics workspace) for a Log Analytics workspace to which you would like to send Microsoft support operations Audit Logs. Example: /subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/viruela2
273288

0 commit comments

Comments
 (0)