特定のRoute53のHostedZoneのみの操作権限を与えたい

Sep 7, 2016   #aws  #route53  #iam 

はじめに

こんにちは、えのかわです。
特定のRoute53のHostedZoneのみを操作できるIAMユーザを作成したい場面があります。
そのIAMポリシーを作成したのでメモです。

HostedZoneの作成

まずRoute53が操作できる環境で2つのHostedZoneを作成します。

IAMユーザの作成

ポリシーは下記です。
<HostedZoneID>に、そのIAMユーザに操作させたいHotedZoneのIDを記載します。
今回は enokawa.me のHostedZoneIDを記載しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "route53:ChangeResourceRecordSets",
                "route53:GetHostedZone",
                "route53:ListResourceRecordSets"
            ],
            "Resource": "arn:aws:route53:::hostedzone/<HostedZoneID>"
        },
        {
            "Effect": "Allow",
            "Action": [
                "route53:GetChange"
            ],
            "Resource": "arn:aws:route53:::change/*"
        }
    ]
}

検証

作成したIAMユーザでAWSマネージメントコンソールにログインし、Route53にアクセスします。
権限エラーがでますね。

HostedZone一覧も閲覧できません。

下記の形式のURLでアクセスする必要があります。

https://console.aws.amazon.com/route53/home?region=ap-northeast-1#resource-record-sets:<HostedZoneID>

enokawa.me のHostedZoneIDを指定してアクセスしてみましょう。 わぁい

enokawa.org のHostedZoneIDを指定してアクセスすると何も表示されません。
想定通りの挙動です。 以下の警告文が表示されます。

r53_user is not authorized to perform: route53:GetHostedZone on resource: hostedzone/HostedZoneID

ALIASレコードは設定できるのか

前述したIAMポリシーにはS3やELB、CloudFrontなどの参照権限が記載されていないので、Alias Targetに候補は出てきません。

が、存在するELBのエンドポイントをペーストしてレコードを登録してみると、、、 お?

わぁい

レコードを操作する権限があるのでALIASレコードの登録は可能です。
仮にそのユーザにALIASレコードを登録させたい場合はELBのエンドポイントを教えてあげましょう。

おわりに

IAM職人の朝は早い。