概要
- AWS:IAMについて学んだことをまとめる
- 学習は Amazon Web Services 業務システム設計・移行ガイド をベース
IAM (Identity and Access Management) とは
「どのサービス(リソース)に対する」
「どのような操作を」
「誰に」
許可するか・許可しないかを定義出来る
IAM を用いてユーザに権限を付与するまでの流れ
- AWSサービスやAWSリソースに対する操作権限を「IAMポリシー」として定義する
- IAMポリシーを「IAMユーザー」や「IAMグループ」にアタッチする
IAMポリシー
- AWSサービスやAWSリソースに対する操作権限をJSON形式で定義したものがIAMポリシー
定義項目
項目 | 内容 |
---|---|
Version | IAMポリシーの文法バージョン(2017年12月現在は「2012-10-17」) |
Effect | ここで定義するポリシーが許可を与えるポリシー(Allow)か拒否するポリシー(Deny)かを設定 |
Action | 「どのAWSサービス」に対する「どのような操作」を許可(拒否)するかを設定 |
Resource | 「どのAWSリソース」に対する操作を許可(拒否)するかを設定 |
IAMポリシー例
- EC2リソースの閲覧
- EC2インスタンスの開始
- EC2インスタンスの停止
上記権限を付与するポリシーは以下
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:Describe*",
"ec2:StartInstances",
"ec2:StopInstances*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Action
Action
にEC2関連の全ての参照権限を示す ec2:Describe*
EC2のインスタンスの開始と停止権限の ec2:StartInstances
ec2:StopInstances
を設定
*
を用いることで ec2:Describe*
から始まる全ての権限を許可している
Resouce
Resouce
に *
を設定することで全てのリソースに対して権限を付与している
Resouce
に Amazonリソースネーム(ARN) を設定することでAWSリソース個別指定することも可能
ARNは arn:aws:ec2:region:account:instance/instance-id
のように指定できる
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:Describe*",
"ec2:StartInstances",
"ec2:StopInstances*"
],
"Effect": "Allow",
"Resource": "arn:aws:ec2:region:account:instance/i-xxxxxxxxx",
"Resource": "arn:aws:ec2:region:account:instance/i-yyyyyyyyy"
}
]
}
Effect
Effect
に Allow
Deny
を設定することで許可 / 拒否を設定できる
IAMユーザーとIAMグループ
AWSの操作を行うためのユーザーを IAMユーザー
と呼ぶ
IAMユーザーは主にマネジメントコンソールにログインする用途で使用される
IAMユーザーにIAMポリシーをアタッチすることで操作権限を付与できる
アクセスキーとシークレットキーのキーペアを払い出しIAMユーザーと同等の権限をプログラムに付与することもできる
IAMグループ
は同じ権限を付与すしたいIAMユーザーをひとまとめに管理する
IAMグループにIAMポリシーをアタッチすることでIAMユーザーへ一律に権限を付与することができる
ルートユーザーの扱い
マネジメントコンソールにログインできるのはIAMユーザーだけではない
AWSアカウント作成時に設定したアドレスとパスワードでログインできる ルートユーザー
が存在する
ルートユーザーはAWSアカウントに対する全ての操作が可能
更に下記の操作はルートユーザーのみが実行可能
- AWSアカウント全体の設定変更(メールアドレス / パスワード変更など)
- AWSサポートのプラン変更
- EC2からのメール上限緩和申請
- 逆引きDNS申請
- 侵入テスト申請
- AWSアカウントの停止
Admin権限を付与したIAMユーザーでも上記操作はできない
これらからルートユーザーは 日常の開発/運用
では使用しない
初めにAdmin権限を付与したIAMユーザーを作成しそのユーザーで作業を行うようにする
AWSアカウントは 二要素認証
をかけ上記のようなルートユーザでしかできない作業以外で使用しない