IAMロールって何ぞや?ということをロールを作ってみる中で疑問に抱き、そこで「信頼ポリシー」とやらの存在が気になったので見ていこうと思います。
IAMロールの作成画面に遷移すると、まず「信頼されたエンティティタイプを選択」する必要があります。
ここではまず「AWSのサービス」から「EC2」を選択してみましょう。
「許可を追加」から許可ポリシー=IAMポリシーを選択します。ここではS3のフルアクセスを与えます。
ロール名を入力して作成ボタンを押せばロール作成完了、というところまで来ました。
ここで「信頼ポリシー」というところに着目。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Principal": {
"Service": [
"ec2.amazonaws.com"
]
}
}
]
}
Principalのところに、エンティティタイプのところで指定したEC2の記載があります。
そしてActionは「sts:AssumeRole」。このAssumeRoleが、本IAMロールをあるリソースに付与する、IAMロールのアイコンに沿って表現するなら、"ヘルメットをかぶせる"行為となります。
ここにResourceの記載がないのは、どのResourceにこのIAMロールをかぶせるかは、IAMロールの設定をEC2構築時や設定時に決まるからです。
このように見ることで、IAMロールというのは、許可を付与する大枠のサービスと、許可するアクションを決めておき、それを一時的にあるリソースに与える=かぶせるものであるということがイメージしやすくなりました。
念のため冒頭の「信頼されたエンティティタイプを選択」で別のものも選んで確認してみます。
「AWSアカウント」を指定し、自分のアカウントを指定しました。
先ほど同様S3のフルアクセスを与えたのち、確認画面まで遷移すると、信頼ポリシーは以下のようになっていました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "【自分のアカウントID】"
},
"Condition": {}
}
]
}
想定通り、Principalには選択したアカウントIDが記載されていました。
これを応用して、マネジメントコンソール右上の「ロールの切り替え」機能を使ってロールの切り替えができます。