CDK Deploy を使用するにはどのような IAM 権限が必要ですか? 質問する

CDK Deploy を使用するにはどのような IAM 権限が必要ですか? 質問する

私のチームには、実行 IAM ロールで実行されるパイプラインがあります。CloudFormation または CDK を介してコードを AWS にデプロイしたいと考えています。

以前は、実行 IAM ロールを使用して、CloudFormation スタックを作成/更新する前に、いくつかの成果物を S3 バケットにアップロードしていました。

私たちは最近 CDK に切り替え、CDK Deploy を使用して可能な限り自動化しようとしていますが、以前はなかった多くの権限項目 (たとえば、cloudformation:GetTemplate) を追加する必要があることに気付きました。

* を付与するだけでは不十分です (最小限の権限に従う必要があります) が、明確に文書化されたリストが見つかりません。

CDK Deploy が依存する権限の標準リストはありますか? 標準リスト以外に「あったらいい」ものはありますか?

ベストアンサー1

CDK v2独自のロールを持ってきて引き受けるようになりました。手動での権限管理は不要になりました。cdk ロールを引き受ける権限を付与するだけで済みます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/cdk-*"
            ]
        }
    ]
}

これらのロールは を介し​​て作成されますcdk bootstrapが、もちろん、ロールとポリシーを作成するための権限が必要です。ただし、ブートストラップ後は、これは不要になります。そのため、特権ロールを使用してこれを手動で実行できます。

どうやら、CDK は、いずれかの cdk ロールを引き受けることができない場合でも続行します。したがって、以下のように CDK ポリシーを手動で管理することは引き続き可能ですが、追加の権限が必要になる可能性があります。

CFN ロールには管理者ポリシーが添付されていることに注意してください。


CDK v1 の以前の回答:

私はCDKアプリをデプロイするために以下のポリシーを使用しています。CDKステージングバケットへのCFNフルアクセスとS3フルアクセスに加えて、次の権限を付与します。すべてCloudFormation を通じて。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "cloudformation:*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:CalledVia": [
                        "cloudformation.amazonaws.com"
                    ]
                }
            },
            "Action": "*",
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::cdktoolkit-stagingbucket-*",
            "Effect": "Allow"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter"
            ],
            "Resource": "arn:aws:ssm::*:parameter/cdk-bootstrap/*"
        }
    ]
}

許可したくないものについては、明示的に拒否を追加することもできます。

また、上記の条件は、プリンシパルがCloudFormationで可能なことだけに限定されるわけではないことに注意してください。潜在的な攻撃ベクトルは、カスタム CFN リソースLambda関数によってサポートされています。そのカスタムリソースを通じてリソースを作成すると、何でもこれは CloudFormation 経由でトリガーされるため、Lambda で実行されます。

ルックアップ(メソッド.fromXxx(...))を使用すると、CDKは実行時に関連サービスに読み取り/リストリクエストを行います。これは、CloudFormationのデプロイではなくCDKシンセの実行中に行われます。必要な権限は、もちろん、コード内のルックアップによって異なります。たとえば、Vpc.fromLookup()アクションを許可する必要があります。機密コンテンツへのアクセスに問題がない場合は、ec2:DescribeVpcsもちろんポリシーを適用できます。ReadOnlyAccess

おすすめ記事