Posted at

AWS : IAMについて今更学ぶ

More than 1 year has passed since last update.


概要


IAM (Identity and Access Management) とは

「どのサービス(リソース)に対する」

「どのような操作を」

「誰に」

許可するか・許可しないかを定義出来る


IAM を用いてユーザに権限を付与するまでの流れ


  1. AWSサービスやAWSリソースに対する操作権限を「IAMポリシー」として帝具する

  2. 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

EffectAllow 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アカウントは 二要素認証 をかけ上記のようなルートユーザでしかできない作業以外で使用しない