IAMとは?
AM(Identity and Access Management)とは、AWSのサービスで「認証」と「認可」の設定を行うことができるサービスです。
「認証」「認可」を正しく設定することで、AWSの利用者や、AWSのサービスがアクセスできる範囲を制御することができます。
IAMは最低限この5つは覚えよう!
IAMユーザー
アクセスキー
2つのアクセスの方法があります。
・プログラムによるアクセス
・AWSマネジメントコンソールへのアクセス
プログラムによるアクセス
アクセスキーIDとシークレットアクセスキーの2種類が発行されます。
両方ともランダムな文字列であり、こちらさえあれば遠隔操作が可能になります。
なので、これが漏洩するとヤバい!!!
AWSマネジメントコンソールへのアクセス
パスワードでログインします。
こちらは2段階認証を入れることが多いので最悪漏れてもなんとかなるはず。。
IAMグループ
IAMグループとは、複数のIAMユーザーの集合体です。
IAMポリシー
AWSで操作できる権限を表したものです。
JSON形式で記述された設定ファイルであり、
認証主体(Identity)にアタッチして使用します。
(こちらはあまり推奨されていないやり方です。ロールを使うのが一般的です。)
また、ポリシーは2種類あります。
AWSが定めた、AWS管理ポリシーとユーザーがJSONで作成したカスタマー管理ポリシーです。
以下のケースであれば、
**「EC2の権限をすべて付与」**した形となります。
カスタマー管理ポリシーを書いてみよう
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBucketRstIP",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::sample-bucket",
"Condition": {
"StringEquals": {
"aws:SourceIp": "12.34.56.78"
}
}
}
]
}
それでは順に説明していきます。
Sid
idを指します。
Effect
許可するか拒否するかを判別します。
Allow ↔︎ Deny
ここからが大事です。
この4つの頭文字をとって、PARCモデルと呼ばれます。
Principal
アクセスできるアカウントを指します。
*
→ この場合すべてのアカウント
"AWS":"arn:aws:iam::123456789012:root"
→ IAM情報(ユーザーのARN)が一致したアカウント
Action
どのサービスを使えるようにするか明記します。
上記の場合は、s3のListBucketが使えるようになります。
Resource
リソースを特定します。
上記の場合は、s3のsample-bucketです。
Condition
IPアドレスやこのポリシーがいつまで使えるかなどを明記します。
上記の場合は、IPアドレス=12.34.56.78の時のみ使えます。
IAMロール
IAMポリシーを複数アタッチして権限をひとまとめにすることを指します。
これだけじゃわからないって人も多いでしょうし、私もまとめきれなかったのでわかりやすい記事を紹介します。
IAMユーザーとIAMポリシー、IAMロールの位置関係をわかりやすく明記しています。