IAMとは、AWSのユーザーに対してAWSサービスの権限を設定するサービスのことです。AWSのセキュリティ部分なので早めの段階で理解しておく必要があります。
IAMユーザー
IAMユーザーは、AWSを利用するアカウントのことです。AWSを使用するユーザーを作る際に、IAMユーザーを作成します。IAMユーザーには、以下の項目を設定します。
- ユーザーID
- パスワード
これらにより、AWSにログインできるようになります。
MFA
MFAというサービスがあり、MFAによりログインの際に多要素認証ができるようになります。例えば、ログインの際に、ユーザーID・パスワード入力以外に、携帯電話やパソコンから出力される数字6桁の入力も追加できます。これにより、デバイスを所有している人以外が、不正ログインすることが困難になり、セキュリティが向上します。
グループ
多数のIAMユーザーに対して、同じポリシーをそれぞれに設定するのは面倒です。そこで、グループという機能を使用します。グループにポリシーを付加しておけば、ユーザーをグループにいれることでユーザーがグループの権限を持つことができます。
IAMポリシー
IAMポリシーとは、AWSのリソースに対する権限設定のことです。IAMポリシーを作成し、IAMユーザーに付加することで、AWSリソースを制御することができます。
ポリシーの設定例
ポリシーはJSONによって記述します。例えば、以下はデフォルトであるAmazonS3FullAccessというポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
「Version」はIAMポリシー構文のバージョンを表しています。現在では、「2012-10-17」と「2008-10-17」のバージョンがあります。最新版のバージョンを使えばいいでしょう。
「Statement」はポリシーの主要部分です。配列形式なので複数のオブジェクトを入れることができます。オブジェクトでは以下を指定します。
- Effect:「Allow」か「Deny」を指定します。前者がAction許可、後者がAction不許可です。
- Action:AWSリソースに対してどのようなことができるかを指定します。上記の場合だと、s3に対する操作がすべて可能です。配列でも指定可能です。
- Resource:AWSのリソースです。配列でも指定可能です。
他にも以下のようなものがあります。
- Condition:ポリシーを実行するタイミングの条件を指定することができます。
- Sid:すきに決められるIDです。
IAMロール
IAMロールでは、AWSのサービスに対してAWSリソースの権限を設定する仕組みのことです。ロールはユーザーと同様に、ポリシーを付加することでAWSリソースに対する権限を設定できます。IAMロールにより、EC2がS3にアクセスすることが可能となります。
ロールの例
IAMロールはポリシーのようにJSONで定義します。例えば、以下のように記述します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
「Principal」では実行するAWSリソースを記載します。ここでは「lambda.amazon.com」なので、Lambdaが実行できるようになります。「Action」が「sts:AssumeRole」なので、Lambdaがこのロールが使用可能となります。