コード例 #1
0
        protected override async Task <SecretData> RotateValue(Parameters parameters, RotationContext context, CancellationToken cancellationToken)
        {
            DateTimeOffset      now         = _clock.UtcNow;
            CloudStorageAccount account     = CloudStorageAccount.Parse(await context.GetSecretValue(parameters.ConnectionString));
            CloudTableClient    tableClient = account.CreateCloudTableClient();
            CloudTable          table       = tableClient.GetTableReference(parameters.Table);
            string sas = table.GetSharedAccessSignature(new SharedAccessTablePolicy
            {
                Permissions            = SharedAccessTablePolicy.PermissionsFromString(parameters.Permissions),
                SharedAccessExpiryTime = now.AddMonths(1),
            });
            string result = table.Uri.AbsoluteUri + sas;

            return(new SecretData(result, now.AddMonths(1), now.AddDays(15)));
        }
コード例 #2
0
 internal static void SetupAccessPolicyPermission <T>(T policy, string permission)
 {
     //set permission as none if passed-in value is empty
     if (permission == null)
     {
         return;
     }
     if (string.IsNullOrEmpty(permission))
     {
         if (typeof(T) == typeof(SharedAccessTablePolicy))
         {
             ((SharedAccessTablePolicy)(Object)policy).Permissions = SharedAccessTablePermissions.None;
         }
         else if (typeof(T) == typeof(SharedAccessFilePolicy))
         {
             ((SharedAccessFilePolicy)(Object)policy).Permissions = SharedAccessFilePermissions.None;
         }
         else if (typeof(T) == typeof(SharedAccessBlobPolicy))
         {
             ((SharedAccessBlobPolicy)(Object)policy).Permissions = SharedAccessBlobPermissions.None;
         }
         else if ((typeof(T) == typeof(SharedAccessQueuePolicy)))
         {
             ((SharedAccessQueuePolicy)(Object)policy).Permissions = SharedAccessQueuePermissions.None;
         }
         else
         {
             throw new ArgumentException(Resources.InvalidAccessPolicyType);
         }
         return;
     }
     permission = permission.ToLower(CultureInfo.InvariantCulture);
     try
     {
         if (typeof(T) == typeof(SharedAccessTablePolicy))
         {
             //PowerShell will convert q to r in genreate table SAS. Add this to avoid regression
             string convertedPermission = permission.Replace('q', 'r');
             ((SharedAccessTablePolicy)(Object)policy).Permissions = SharedAccessTablePolicy.PermissionsFromString(convertedPermission);
         }
         else if (typeof(T) == typeof(SharedAccessFilePolicy))
         {
             ((SharedAccessFilePolicy)(Object)policy).Permissions = SharedAccessFilePolicy.PermissionsFromString(permission);
         }
         else if (typeof(T) == typeof(SharedAccessBlobPolicy))
         {
             ((SharedAccessBlobPolicy)(Object)policy).Permissions = SharedAccessBlobPolicy.PermissionsFromString(permission);
         }
         else if ((typeof(T) == typeof(SharedAccessQueuePolicy)))
         {
             ((SharedAccessQueuePolicy)(Object)policy).Permissions = SharedAccessQueuePolicy.PermissionsFromString(permission);
         }
         else
         {
             throw new ArgumentException(Resources.InvalidAccessPolicyType);
         }
     }
     catch (System.ArgumentOutOfRangeException)
     {
         throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.InvalidAccessPermission, permission));
     }
 }