Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
 /// <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;
     }
 }
Ejemplo n.º 8
0
 /// <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));
 }
Ejemplo n.º 9
0
 private void ModelizeRetentionInfo(BaseBlobAuditingPolicyModel model, int retentionDays)
 {
     model.RetentionInDays = Convert.ToUInt32(retentionDays);
 }