Próbuję stworzyć IAM Zasady Do ograniczenia dostępu do wybranych wiader S3. Istnieją domyślne domyślne S3 Bucket ARNs, które muszą być obecne zawsze , operator szablonu może dodać listę dodatkowych Bucket ARNs, aby udzielić dostępu do, przez Parametr.

W moim szablonie BucketARNs Parametr , pozwala operatorowi określić listę arn, która nie jest ograniczona długość.

  BucketARNs:
    Type: CommaDelimitedList
    Description: 'Add the ARN of S3 Buckets that the Get* and List*
      access to. When specifying a Bucket 2 values should be supplied one for the
      bucket and for objects within that bucket, for example: arn:aws:s3:::MyContentBucket,arn:aws:s3:::MyContentBucket/*  .
      This defaults to all buckets.'
    Default: arn:aws:s3:::*, arn:aws:s3:::*/*

Dokument polisowy, który korzysta z tego Parametr wygląd lubić

PolicyDocument:
  Version: '2012-10-17'
  Statement:
  - Effect: Allow
    Action:
    - s3:Get*
    - s3:List*
    Resource:
      !Ref BucketARNs

Chcę to zrobić, to zapewnić, że na przykład

arn:aws:s3:::MyMustHaveBucket,
arn:aws:s3:::MyMustHaveBucket/*

Arns są zawsze obecne na liście BucketARNs. Default w Parametr można usunąć przez operatora - jest jedynym rozwiązaniem, aby dodać je jako wartości Default i dodać informacje w Parametr jest zmienna?

Idealnie, chciałbym mieć funkcję konkatenacji listy

0
georgealton 15 luty 2017, 15:28

2 odpowiedzi

Najlepsza odpowiedź

Dwie opcje:

  1. Możesz użyć AllowedPattern na parametrze String wraz z wartością Default, aby upewnić się, że dostarczony domyślny jest zawsze zawarty w dostarczonym parametrze, a następnie użyj Fn::Split, aby rozwiązać parametr do tablicy, gdy jest używany w szablonie:

    Parameters:
      BucketARNs:
        Type: String
        Default: arn:aws:s3:::*, arn:aws:s3:::*/*
        AllowedPattern: arn:aws:s3:::\*, arn:aws:s3:::\*\/\*.*
    Resources:
      Dummy:
        Type: AWS::CloudFormation::WaitConditionHandle
    Outputs:
      Result:
        Value: !Join [',', !Split [',', !Ref BucketARNs]]
    
  2. Możesz użyć Fn::Split wraz z {X1}} i Fn::Join Aby dołączyć stałe wartości do parametru dostarczonego przez użytkownika:

    Parameters:
      BucketARNs:
        Type: CommaDelimitedList
    Resources:
      Dummy:
        Type: AWS::CloudFormation::WaitConditionHandle
    Outputs:
      Result:
        Value: !Join [',', !Split [',', !Sub [
          "arn:aws:s3:::*,arn:aws:s3:::*/*,${Buckets}",
          {Buckets: !Join [',', !Ref BucketARNs]}
        ]]]
    

Final !Join W powyższych przykładach są tylko na wyjście tablicy w wyjściu z stosu, nie są potrzebne podczas korzystania z parametrów w rzeczywistym wejściu właściwości do szablonu.

1
wjordan 16 luty 2017, 00:05

Użyj Fn :: Dołącz, aby połączyć stałe parametry

0
Tim Bassett 15 luty 2017, 19:24