#IAMとは
画像:CloudBerry Lab
AWS操作を実施するための認証・認可の仕組み
- どのサービス(リソース)の
- どういう機能や範囲を
- 誰に
付与するのかを決めることができる。
#IAMの機能
IAMには以下の4つの機能を用いてユーザーに権限を付与する。
- IAMポリシー
- IAMユーザー
- IAMグループ
- IAMロール
権限付与の流れとしては以下のようになる。
- AWSサービスやリソースに対する操作権限を__『IAMポリシー』__として定義する
- IAMポリシーを__『IAMユーザー』や『IAMグループ』__にアタッチ(付与)する
#AWSのアカウントの種類
AWSのアカウントは以下の2つに大きく分類される。
- ルートユーザー
- IAMユーザー
###ルートユーザー(AWSアカウント)
AWSの全サービスに対して操作できる権限を持っている非常に強力なアカウント。
多要素認証(Multi-Factor Authentication, MFA)の設定をし、セキュリティーを強くする。
特徴
- AWSアカウント作成時に作られるIDアカウント
- 全てのAWSサービスとリソースを使用できる情報を有するユーザー
- 日常的なタスクはルートユーザーを使用しないことが強く推奨される
###IAMユーザー
IAMポリシー内でAWSサービスを利用できるユーザー。基本操作はIAMユーザーで実施することになる。
#IAMポリシー
IAMポリシーは、Effect(許可)、Action(どのサービス)、__Resouuce(どの範囲、機能)__の3つのルールをJSON形式で記述し、AWSのサービスを利用する上での権限を設定する。
以下に、『IAM ユーザーが自分の S3 ホームディレクトリにプログラムおよびコンソールでアクセスすることを許可する』ポリシーの例を示す。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": [
"",
"home/",
"home/${aws:username}/*"
]
}
}
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket-name/home/${aws:username}",
"arn:aws:s3:::bucket-name/home/${aws:username}/*"
]
}
]
}
また、IAMポリシーは以下の2種類が使い分けられている
- インラインポリシー(対象毎に個別に適用する。管理が煩雑になるので基本的には使わない。)
- 管理ポリシー(複数のユーザー、グループに適用する。)
#IAMユーザー
AWSを利用するために各利用者に与えられる認証情報(ID)。以下の2つの認証方法がある。
- ユーザーIDとパスワード(Webコンソールのログインに使う)
- アクセスキーとシークレットアクセスキー(CLIやAPIからAWSのリソースにアクセスするときに使う)
#IAMグループ
ある権限を付与したグループにユーザーを入れることで、ユーザーの権限を容易かつ正確に管理することができる。
1人のユーザーが複数のグループに所属することも可能(最大10グループ)。
#IAMロール
一時的にAWSリソースへのアクセス権限を付与するときに使用する。
例
- EC2インスタンス上で稼働するアプリケーションにAWSのリソースへのアクセス権限を付与する
インスタンスにロールを付与することで、プログラムや設定ファイルに認証情報を書かなくて済むので、セキュリティーの向上が期待できる。
#リファレンス