IAMポリシーでPassRoleするサービスをCloudFormationだけに絞る

記事タイトルとURLをコピーする

こんにちは、PS課のミネです。

IAMユーザーにリソース作成を許可したくない場合、CloudFormation用のIAMロールを作っておき、そのIAMロールをPassRoleする権限だけIAMユーザーには与えておけば、CloudFormation経由でだけリソースを作ることが可能です。

PassRoleするサービスをCloudFormationに絞る

以下のようにiam:PassedToServiceでPassRoleするサービスを絞ることが可能ですが、CloudFormationでスタックを流そうとするとエラーになります。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "サービス名.amazonaws.com"
                 }
            }
        }
    ]
}

サポートに確認するとCloudFormationはiam:PassedToServiceに現時点(2018/12/19)では対応していないとのことでした。他のサービスでもiam:PassedToServiceに対応していないものがあるかは不明ですが、ひょっとするとあるかもしれません。 以下のようにポリシーを書くとCloudFormationだけに絞ることが可能です。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEqualsIfExists": {
                    "iam:PassedToService": "cloudformation.amazonaws.com"
                }
            }
        }
    ]
}