【IAM ポリシー】 AWS Certificate Manager の条件キーで、証明書を制限出来るようになりました

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

こんにちは!イーゴリです。

今日は下記のAWSアップデートを紹介したいと思います。

aws.amazon.com

新しいコンテキストキーを使用して、ACM ユーザーが証明書発行パラメータをカスタマイズする方法を定義し、1) 特定の証明書の検証方法、2) ワイルドカード名など特定のドメイン名の証明書をリクエストできるユーザー(★今日のブログ内容)、3) 特定の証明書キーアルゴリズム、4) パブリックまたはプライベートの証明書タイプのリクエストを承認できます。さらに、ユーザーが証明書透過性 (CT) ログを無効にしたり、特定の AWS プライベート認証局から証明書をリクエストしたりできないようにすることができます。

ある会社のセキュリティルール上では、「ワイルドカードの使用禁止」というルールがあります。

理由としては、1 台でも侵害されるとその証明書を使用しているすべてのドメインが脆弱になります。また、そのサブドメインを取り扱う管理者が増えれば増えるほど、秘密鍵を共有する必要性が増え、高いリスクが生じます。

上記のアップデートで、AWS管理者がAWS IAMユーザーにACMの発行権限を与えるときに、特定のサブドメインのみを許可するといった制御設定ができます。

例えば、人事部門が HR.example.com というドメイン名の証明書を発行することを承認し、IT 部門は IT.example.com の証明書のみを発行できるようにすることができます。

Wildcardドメインを登録できないように設定する

対象IAMユーザに下記のポリシーを追加します。

{
    "Version":"2012-10-17",
    "Statement":{
        "Effect":"Deny",
        "Action":"acm:RequestCertificate",
        "Resource":"*",
        "Condition": {
            "ForAnyValue:StringLike": {
                "acm:DomainNames": [
                    "${*}.*"
                ]
            }
        }
    }
}
        

123.domain-test.gqを登録できました。

*.domain-test.gq(Wildcard)を登録できませんでした。

Wildcardが発行できないというエラー内容:

証明書をリクエストできませんでした
User: arn:aws:sts::XXX:assumed-role/acm-sagyo/administrator is not authorized to perform: acm:RequestCertificate on resource: arn:aws:acm:ap-northeast-1:XXX:certificate/* with an explicit deny in an identity-based policy (Service: AWSCertificateManager; Status Code: 400; Error Code: AccessDeniedException; Request ID: 40d3aa06-d186-45d4-9bca-d4c603c3dbcc; Proxy: null) 下の [戻る] ボタンを選択して修正します。

想定通りの結果です。

特定ドメインのリクエストのみを許可する

まずはdomain-test.gqのドメインのサブドメインリクエストのみを許可します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "acm:RequestCertificate",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringNotLike": {
                    "acm:DomainNames": ["*.domain-test.gq"]
                }
            }
        }
    ]
}

test.domain-test.gqを登録できました。

no-target-domain-test.gqを登録できませんでした。

想定通りの結果です。

次はIT部門が IT.domain-test.gq のサブドメインの証明書のみを発行できるように設定しましょう。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "acm:RequestCertificate",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringNotLike": {
                    "acm:DomainNames": ["*.it.domain-test.gq"]
                }
            }
        }
    ]
}

123.it.domain-test.gqを登録できました。

123.hr.domain-test.gqを登録できませんでした。

想定通りの結果です。

その他の設定

その他の設定も色々できますので、下記の公式ページの事例をご参考ください。

docs.aws.amazon.com

以上、御一読ありがとうございました。

本田 イーゴリ (記事一覧)

カスタマーサクセス部

・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE

趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽