はじめに
こんにちは、えのかわです。
特定の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職人の朝は早い。