Skip to content

SQL Audit cmdlets to use table storage endpoints from the environment #1144

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Oct 21, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,15 @@ public void TestAuditingDatabaseUpdatePolicyWithStorage()
RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithStorage");
}

[Fact(Skip = "PSGet: TODO fix by moving SM specific logic to test setup")]
[Fact]
[Trait(Category.AcceptanceType, Category.Sql)]
public void TestAuditingDatabaseUpdatePolicyWithStorageV2()
{
RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithStorageV2");
}

[Fact(Skip = "PSGet: TODO fix by moving SM specific logic to test setup")] [Trait(Category.AcceptanceType, Category.Sql)]
[Fact(Skip = "PSGet: TODO fix by moving SM specific logic to test setup")]
[Trait(Category.AcceptanceType, Category.Sql)]
public void TestAuditingServerUpdatePolicyWithStorage()
{
RunPowerShellTest("Test-AuditingServerUpdatePolicyWithStorage");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Tests that when setting the storage account property's value in a database's aud
function Test-AuditingDatabaseUpdatePolicyWithStorageV2
{
# Setup
$testSuffix = 102
$testSuffix = 1029
Create-TestEnvironmentWithStorageV2 $testSuffix
$params = Get-SqlAuditingTestEnvironmentParameters $testSuffix

Expand Down Expand Up @@ -215,7 +215,7 @@ Tests that when modifying the eventType property of a databases's auditing polic
function Test-AuditingDatabaseUpdatePolicyWithEventTypes
{
# Setup
$testSuffix = 501
$testSuffix = 5011
Create-TestEnvironment $testSuffix
$params = Get-SqlAuditingTestEnvironmentParameters $testSuffix

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public void SetupEnvironment()

var environment = AzureRmProfileProvider.Instance.Profile.Environments[AzureRmProfileProvider.Instance.Profile.Context.Subscription.Environment];
environment.Endpoints[AzureEnvironment.Endpoint.Graph] = csmEnvironment.Endpoints.GraphUri.AbsoluteUri;

environment.Endpoints[AzureEnvironment.Endpoint.StorageEndpointSuffix] = "core.windows.net";
AzureRmProfileProvider.Instance.Profile.Save();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ protected void RunPowerShellTest(params string[] scripts)
helper.RMStorageModule,
helper.GetRMModulePath(@"AzureRM.Insights.psd1"),
helper.GetRMModulePath(@"AzureRM.Sql.psd1"));

helper.RunPowerShellTest(scripts);
}
}
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ protected override SqlAuditAdapter InitModelAdapter(AzureSubscription subscripti
/// <param name="model">The model object with the data to be sent to the REST endpoints</param>
protected override DatabaseAuditingPolicyModel PersistChanges(DatabaseAuditingPolicyModel model)
{
ModelAdapter.SetDatabaseAuditingPolicy(model, clientRequestId);
ModelAdapter.SetDatabaseAuditingPolicy(model, clientRequestId, DefaultContext.Environment.Endpoints[AzureEnvironment.Endpoint.StorageEndpointSuffix]);
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ protected override SqlAuditAdapter InitModelAdapter(AzureSubscription subscripti
/// <param name="model">The model object with the data to be sent to the REST endpoints</param>
protected override ServerAuditingPolicyModel PersistChanges(ServerAuditingPolicyModel model)
{
ModelAdapter.SetServerAuditingPolicy(model, clientRequestId);
ModelAdapter.SetServerAuditingPolicy(model, clientRequestId, DefaultContext.Environment.Endpoints[AzureEnvironment.Endpoint.StorageEndpointSuffix]);
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -243,22 +243,22 @@ private void ModelizeRetentionInfo(BaseAuditingPolicyModel model, string retenti
/// <summary>
/// Transforms the given model to its endpoints acceptable structure and sends it to the endpoint
/// </summary>
public void SetServerAuditingPolicy(ServerAuditingPolicyModel model, String clientId)
public void SetServerAuditingPolicy(ServerAuditingPolicyModel model, String clientId, string storageEndpointSuffix)
{
ServerAuditingPolicyCreateOrUpdateParameters parameters = PolicizeServerAuditingModel(model);
ServerAuditingPolicyCreateOrUpdateParameters parameters = PolicizeServerAuditingModel(model, storageEndpointSuffix);
Communicator.SetServerAuditingPolicy(model.ResourceGroupName, model.ServerName, clientId, parameters);
}

/// <summary>
/// Transforms the given model to its endpoints acceptable structure and sends it to the endpoint
/// </summary>
public void SetDatabaseAuditingPolicy(DatabaseAuditingPolicyModel model, String clientId)
public void SetDatabaseAuditingPolicy(DatabaseAuditingPolicyModel model, String clientId, string storageEndpointSuffix)
{
if (!IsDatabaseInServiceTierForPolicy(model, clientId))
{
throw new Exception(Microsoft.Azure.Commands.Sql.Properties.Resources.DatabaseNotInServiceTierForAuditingPolicy);
}
DatabaseAuditingPolicyCreateOrUpdateParameters parameters = PolicizeDatabaseAuditingModel(model);
DatabaseAuditingPolicyCreateOrUpdateParameters parameters = PolicizeDatabaseAuditingModel(model, storageEndpointSuffix);
Communicator.SetDatabaseAuditingPolicy(model.ResourceGroupName, model.ServerName, model.DatabaseName, clientId, parameters);
}

Expand All @@ -280,7 +280,7 @@ private bool IsDatabaseInServiceTierForPolicy(DatabaseAuditingPolicyModel model,
/// </summary>
/// <param name="model">The AuditingPolicy model object</param>
/// <returns>The communication model object</returns>
private DatabaseAuditingPolicyCreateOrUpdateParameters PolicizeDatabaseAuditingModel(DatabaseAuditingPolicyModel model)
private DatabaseAuditingPolicyCreateOrUpdateParameters PolicizeDatabaseAuditingModel(DatabaseAuditingPolicyModel model, string storageEndpointSuffix)
{
DatabaseAuditingPolicyCreateOrUpdateParameters updateParameters = new DatabaseAuditingPolicyCreateOrUpdateParameters();
DatabaseAuditingPolicyProperties properties = new DatabaseAuditingPolicyProperties();
Expand All @@ -290,7 +290,7 @@ private DatabaseAuditingPolicyCreateOrUpdateParameters PolicizeDatabaseAuditingM
properties.StorageAccountName = ExtractStorageAccountName(model);
properties.StorageAccountResourceGroupName = ExtractStorageAccountResourceGroup(properties.StorageAccountName);
properties.StorageAccountSubscriptionId = ExtractStorageAccountSubscriptionId(properties.StorageAccountName);
properties.StorageTableEndpoint = ExtractStorageAccountTableEndpoint(properties.StorageAccountName);
properties.StorageTableEndpoint = ExtractStorageAccountTableEndpoint(properties.StorageAccountName, storageEndpointSuffix);
properties.StorageAccountKey = ExtractStorageAccountKey(properties.StorageAccountName, model, properties.StorageAccountResourceGroupName, StorageKeyKind.Primary);
properties.StorageAccountSecondaryKey = ExtractStorageAccountKey(properties.StorageAccountName, model, properties.StorageAccountResourceGroupName, StorageKeyKind.Secondary);
properties.EventTypesToAudit = ExtractEventTypes(model);
Expand All @@ -304,7 +304,7 @@ private DatabaseAuditingPolicyCreateOrUpdateParameters PolicizeDatabaseAuditingM
/// </summary>
/// <param name="model">The AuditingPolicy model object</param>
/// <returns>The communication model object</returns>
private ServerAuditingPolicyCreateOrUpdateParameters PolicizeServerAuditingModel(ServerAuditingPolicyModel model)
private ServerAuditingPolicyCreateOrUpdateParameters PolicizeServerAuditingModel(ServerAuditingPolicyModel model, string storageEndpointSuffix)
{
ServerAuditingPolicyCreateOrUpdateParameters updateParameters = new ServerAuditingPolicyCreateOrUpdateParameters();
ServerAuditingPolicyProperties properties = new ServerAuditingPolicyProperties();
Expand All @@ -313,7 +313,7 @@ private ServerAuditingPolicyCreateOrUpdateParameters PolicizeServerAuditingModel
properties.StorageAccountName = ExtractStorageAccountName(model);
properties.StorageAccountResourceGroupName = ExtractStorageAccountResourceGroup(properties.StorageAccountName);
properties.StorageAccountSubscriptionId = ExtractStorageAccountSubscriptionId(properties.StorageAccountName);
properties.StorageTableEndpoint = ExtractStorageAccountTableEndpoint(properties.StorageAccountName);
properties.StorageTableEndpoint = ExtractStorageAccountTableEndpoint(properties.StorageAccountName, storageEndpointSuffix);
properties.StorageAccountKey = ExtractStorageAccountKey(properties.StorageAccountName, model, properties.StorageAccountResourceGroupName, StorageKeyKind.Primary);
properties.StorageAccountSecondaryKey = ExtractStorageAccountKey(properties.StorageAccountName, model, properties.StorageAccountResourceGroupName, StorageKeyKind.Secondary);
properties.EventTypesToAudit = ExtractEventTypes(model);
Expand Down Expand Up @@ -421,7 +421,7 @@ private bool IsEventTypeOn(AuditEventType lookedForType, AuditEventType[] userSe
/// <summary>
/// Extracts the storage account endpoint
/// </summary>
private string ExtractStorageAccountTableEndpoint(string storageName)
private string ExtractStorageAccountTableEndpoint(string storageName, string endpointSuffix)
{
if (IgnoreStorage)
{
Expand All @@ -431,7 +431,7 @@ private string ExtractStorageAccountTableEndpoint(string storageName)
{
return FetchedStorageAccountTableEndpoint;
}
return AzureCommunicator.GetStorageTableEndpoint(Context, storageName);
return string.Format("https://{0}.table.{1}", storageName, endpointSuffix);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,29 +199,6 @@ public string GetStorageResourceGroup(string storageAccountName)
}
}

/// <summary>
/// Gets the storage table endpoint the given storage account
/// </summary>
public string GetStorageTableEndpoint(AzureContext context, string storageAccountName)
{
try
{
List<Uri> endpoints = new List<Uri>(GetCurrentStorageClient(context).StorageAccounts.Get(storageAccountName).StorageAccount.Properties.Endpoints);
return endpoints.Find(u => u.AbsoluteUri.Contains(".table.")).AbsoluteUri;
}
catch
{
try
{
return GetCurrentStorageV2Client(context).StorageAccounts.List().StorageAccounts.Where(a => a.Name == storageAccountName).First().PrimaryEndpoints.Table.AbsoluteUri;
}
catch
{
throw new Exception(string.Format(Microsoft.Azure.Commands.Sql.Properties.Resources.StorageAccountNotFound, storageAccountName));
}
}
}

/// <summary>
/// Lazy creation of a single instance of a storage client
/// </summary>
Expand Down