Help us understand the problem. What is going on with this article?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした