AWS
IAM

AWS : IAMについて今更学ぶ

概要

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