/// <summary> /// Takes the cmdlets model object and transform it to the policy as expected by the endpoint /// </summary> /// <param name="model">The AuditingPolicy model object</param> /// <param name="storageEndpointSuffix">The suffix of the storage endpoint</param> /// <returns>The communication model object</returns> private BlobAuditingCreateOrUpdateParameters PolicizeBlobAuditingModel(BaseBlobAuditingPolicyModel model, string storageEndpointSuffix) { var updateParameters = new BlobAuditingCreateOrUpdateParameters(); var properties = new BlobAuditingProperties(); updateParameters.Properties = properties; properties.State = model.AuditState.ToString(); if (!IgnoreStorage && (model.AuditState == AuditStateType.Enabled)) { properties.StorageEndpoint = ExtractStorageAccountName(model, storageEndpointSuffix); properties.StorageAccountAccessKey = Subscription.GetId().Equals(model.StorageAccountSubscriptionId) ? ExtractStorageAccountKey(model.StorageAccountName, model.StorageKeyType) : ExtractStorageAccountKey(model.StorageAccountSubscriptionId, model.StorageAccountName, model.StorageKeyType); properties.IsStorageSecondaryKeyInUse = model.StorageKeyType == StorageKeyKind.Secondary; properties.StorageAccountSubscriptionId = Subscription.GetId().Equals(model.StorageAccountSubscriptionId) ? ExtractStorageAccountSubscriptionId(model.StorageAccountName) : model.StorageAccountSubscriptionId.ToString(); } properties.AuditActionsAndGroups = ExtractAuditActionsAndGroups(model); if (model.RetentionInDays != null) { properties.RetentionDays = (int)model.RetentionInDays; } return(updateParameters); }
private static void ModelizeStorageInfo(BaseBlobAuditingPolicyModel model, string storageEndpoint) { if (string.IsNullOrEmpty(storageEndpoint)) { return; } var accountNameStartIndex = storageEndpoint.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase)? 8 : 7; // https:// or http:// var accountNameEndIndex = storageEndpoint.IndexOf(".blob", StringComparison.InvariantCultureIgnoreCase); model.StorageAccountName = storageEndpoint.Substring(accountNameStartIndex, accountNameEndIndex - accountNameStartIndex); }
private static IList <string> ExtractAuditActionsAndGroups(BaseBlobAuditingPolicyModel model) { var actionsAndGroups = new List <string>(model.AuditAction); model.AuditActionGroup.ToList().ForEach(aag => actionsAndGroups.Add(aag.ToString())); if (actionsAndGroups.Count == 0) // default audit actions and groups in case nothing was defined by the user { actionsAndGroups.Add("SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP"); actionsAndGroups.Add("FAILED_DATABASE_AUTHENTICATION_GROUP"); actionsAndGroups.Add("BATCH_COMPLETED_GROUP"); } return(actionsAndGroups); }
private static void ModelizeStorageInfo(BaseBlobAuditingPolicyModel model, string storageEndpoint, bool?isSecondary, Guid?storageAccountSubscriptionId) { if (string.IsNullOrEmpty(storageEndpoint)) { return; } var accountNameStartIndex = storageEndpoint.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase) ? 8 : 7; // https:// or http:// var accountNameEndIndex = storageEndpoint.IndexOf(".blob", StringComparison.InvariantCultureIgnoreCase); model.StorageAccountName = storageEndpoint.Substring(accountNameStartIndex, accountNameEndIndex - accountNameStartIndex); model.StorageKeyType = (isSecondary ?? false) ? StorageKeyKind.Secondary : StorageKeyKind.Primary; model.StorageAccountSubscriptionId = storageAccountSubscriptionId ?? Guid.Empty; }
private void ModelizeAuditActionGroups(BaseBlobAuditingPolicyModel policyModel, IEnumerable <string> auditActionsAndGroups) { var groups = new List <AuditActionGroups>(); auditActionsAndGroups.ForEach(item => { AuditActionGroups group; if (Enum.TryParse(item, true, out group)) { groups.Add(group); } }); policyModel.AuditActionGroup = groups.ToArray(); }
/// <summary> /// Takes the cmdlets model object and transform it to the policy as expected by the endpoint /// </summary> /// <param name="model">The AuditingPolicy model object</param> /// <param name="storageEndpointSuffix">The suffix of the storage endpoint</param> /// <returns>The communication model object</returns> private BlobAuditingCreateOrUpdateParameters PolicizeBlobAuditingModel(BaseBlobAuditingPolicyModel model, string storageEndpointSuffix) { var updateParameters = new BlobAuditingCreateOrUpdateParameters(); var properties = new BlobAuditingProperties(); updateParameters.Properties = properties; properties.State = model.AuditState.ToString(); if (!IgnoreStorage) { properties.StorageEndpoint = ExtractStorageAccountName(model, storageEndpointSuffix); properties.StorageAccountAccessKey = ExtractStorageAccountKey(model.StorageAccountName); } properties.AuditActionsAndGroups = ExtractAuditActionsAndGroups(model); properties.RetentionDays = (int)model.RetentionInDays; return(updateParameters); }
/// <summary> /// Takes the cmdlets model object and transform it to the policy as expected by the endpoint /// </summary> /// <param name="model">The AuditingPolicy model object</param> /// <param name="storageEndpointSuffix">The suffix of the storage endpoint</param> /// <param name="policy">The policy to be modified</param> /// <returns>The communication model object</returns> private void PolicizeBlobAuditingModel(BaseBlobAuditingPolicyModel model, string storageEndpointSuffix, dynamic policy) { policy.State = model.AuditState == AuditStateType.Disabled ? Management.Sql.Models.BlobAuditingPolicyState.Disabled : Management.Sql.Models.BlobAuditingPolicyState.Enabled; if (!IgnoreStorage && (model.AuditState == AuditStateType.Enabled)) { policy.StorageEndpoint = ExtractStorageAccountName(model, storageEndpointSuffix); policy.StorageAccountAccessKey = Subscription.GetId().Equals(model.StorageAccountSubscriptionId) ? ExtractStorageAccountKey(model.StorageAccountName, model.StorageKeyType) : ExtractStorageAccountKey(model.StorageAccountSubscriptionId, model.StorageAccountName, model.StorageKeyType); policy.IsStorageSecondaryKeyInUse = model.StorageKeyType == StorageKeyKind.Secondary; policy.StorageAccountSubscriptionId = Subscription.GetId().Equals(model.StorageAccountSubscriptionId) ? Guid.Parse(ExtractStorageAccountSubscriptionId(model.StorageAccountName)) : model.StorageAccountSubscriptionId; } policy.AuditActionsAndGroups = ExtractAuditActionsAndGroups(model); if (model.RetentionInDays != null) { policy.RetentionDays = (int)model.RetentionInDays; } }
/// <summary> /// Extracts the storage account name from the given model /// </summary> private static string ExtractStorageAccountName(BaseBlobAuditingPolicyModel model, string endpointSuffix) { return(string.Format("https://{0}.blob.{1}", model.StorageAccountName, endpointSuffix)); }
private void ModelizeRetentionInfo(BaseBlobAuditingPolicyModel model, int retentionDays) { model.RetentionInDays = Convert.ToUInt32(retentionDays); }