インフラ

「cdk diff」に必要なIAMポリシー

cdk

こんにちは、ちゃりおです。

CI時に「cdk diff」を行いたいことがありました。
ローカルから実行するときは、「cdk deploy」を実行する関係でAdmin権限を使っていました。

「cdk diff」ではCFNとの差分確認のみで新規リソースを作ることはないため、権限を絞れると思ってしらべてみました。

Contents

「cdk diff」に必要なIAMポリシー

結論

IAMポリシー「cloudformation:DescribeStacks」を割り当てれば実行可能です。

検証方法

検証用のIAMユーザーを作成して、cdkはsample-appを使って「cdk diff」を試しました。

$ cdk init sample-app --language=typescript
$ cdk diff

権限無いときのエラー

とりあえず、IAMユーザーに権限あたえずにdiff実行してみました。
エラーメッセージからは「cloudformation:DescribeStacks」が必要そうなことがわかりました。


cdk diff                                                                                             (git)-[master]
Stack CdkDiffStack
User: arn:aws:iam::XXXXXXXXX:user/cdkdiff is not authorized to perform: cloudformation:DescribeStacks on resource: arn:aws:cloudformation:ap-northeast-1:949637840634:stack/CdkDiffStack/*

インラインポリシー「cloudformation:DescribeStacks」成功

エラーメッセージの通り、「cloudformation:DescribeStacks」を追加。
結果は、成功でした。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudformation:DescribeStacks",
            "Resource": "*"
        }
    ]
}

※追記: 上記で権限たりないことがあり、その際はIAMのActionに「”cloudformation:GetTemplate”」を追加することで解決しました。

まとめ

「cdk diff」に必要なIAM権限調べてみました。
「AWSCloudFormationReadOnlyAccess」くらい割当ないとだめかと思っていましたが、「DescribeStacks」だけで可能だったみたいです。

GithubActionsとかで、PR時に「cdk diff」だけ実行したいときなどに役立つかと思います。

Amzonで「AWS」の本を見てみる

楽天で「AWS」の本をみてみる!!

cdk
CDK「Export <アウトプット> cannot be deleted as it is in use by <スタック名>」こんにちは、ちゃりおです。 CDKの自動で追加されるクロススタック参照で以下のエラーがでました。 Export cannot be...
Github Actionsを使ってCDKを自動デプロイするこんにちは、ちゃりおです。 CDK手動反映だと反映漏れが発生することもあり、今回はGithub Actionsを使ってCDKを自動デプ...
https://chariosan.com/2021/07/25/aws-cdk-ecs-patterns_default_sg_allow_all/