LoginSignup
0
0

More than 1 year has passed since last update.

CloudFormationでポリシーを作成するとパラメータの末尾に:rootがついてしまう

Posted at

はじめに

久しぶりにCloudFormationを使ってIaCに挑戦していたところ、作成したいリソース通りにならないという問題が発生したためまとめます

おそらく他の記事にもなかったため、つまずくと時間がかかるかと思いますので誰かの役に立てば嬉しいです

問題

S3のポリシーをCloudFormationで以下のように作成しました

s3.yml
  S3BucketPolicy:
    Type: "AWS::S3::BucketPolicy"
    Properties:
      Bucket:
        Ref: S3Bucket
      PolicyDocument:
        Statement:
          - Action:
              - "s3:ListBucket"
            Effect: "Allow"
            Resource:
              Fn::Sub: "arn:aws:s3:::${BucketName}"
            Principal:
              AWS: !Ref CodeBuildRole

そして、AWSで作成したS3のポリシーを確認すると以下のようになっていました

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "767555320:root" # なぜかrootがついている
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::kitlab-test-s3"
        }
    ]
}

767555320はダミーでパラメータに設定した値です
そのあとになぜか「:root」という文字が付与されていました

解決方法

これはパラメータとして渡している値が問題でした
PrincipalにはARNを渡さないといけないので、もしARNの形式でない文字列が渡されていると省略されているであろう:rootを自動的に付与する仕組みのようでした

なので以下のコードでCLIを叩いてS3を作成するようにしたところうまくいくようになりました

$ aws cloudformation create-stack \
--stack-name s3-test \
--template-body file://./cloudformation/s3.yml \
--parameters \
ParameterKey=CodeBuildRole,ParameterValue=arn:aws:iam::7675555555:role/service-role/sample
(以下省略)
{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::7675555555:role/service-role/sample"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::s3-test"
        }
    ]
}

おわりに

この仕様が調べた感じではどこにも載っていなかったので解決までに時間がかかりました
ダミーの値でリソース作成しないほうがよさそうです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0