AWSを触ってみる【IAM】
はじめに
AWSが提供する学習プラットフォームAWS Skill Builderの学習プランが11/2まで無料で急ぎでやってみたので学んだことをまとめます。
実際にAWSコンソールを開きながら進められるのでおすすめです。
※自分はAWSを業務で若干しか触ったことないレベルなのでほぼ初心者です。
IAMとは
AWS Identity and Access Management (IAM) は、AWS でユーザーとユーザーのアクセス許可を管理できるサービスです。IAM を使用すると、「誰がどのリソースにアクセスできるか」を一元管理できます。
IAMの4つの要素
IAMを理解する上で重要なのは、以下の4つの要素です。
- ユーザー
- グループ
- ロール
- ポリシー
ユーザー
一人の利用者に対して、1つのIAMユーザー を発行します。
複数人で同じユーザーを使い回すことは避け、個人ごとにアカウントを分ける のが基本です。
各ユーザーには、必要なアクセス権限を付与するための ポリシーを適用 できます。
グループ
ユーザーグループは IAM ユーザーの集合です。ユーザーの集合に対するアクセス許可を指定するには、グループを使用します。
特定のルールセットをグループ内の全ユーザーに一括して適用することができます。
グループには、(複数の)ポリシーを適用することができます。
10人ユーザーにそれぞれ1人ずつ権限を設定していくのは面倒。
役割ごとにIAMグループを作ってそれぞれのグループに必要な権限設定をして、そのグループにユーザーを所属させて権限を設定したほうが管理しやすい。
管理の流れ例
- グループを作成(例:Developers)
- グループに許可する権限(ポリシー)を付与
- ユーザーをそのグループに追加
→ 追加されたユーザーは自動的に、グループの権限を継承します。
グループは「複数ユーザーにまとめて権限を付与したいとき」に便利な仕組みです。
ロール
IAMロールは、ユーザーやサービスに一時的な権限を与える仕組みです。
IAMユーザーと似ていますが、異なる点は、AWSリソース(EC2、Lambdaなど)に対して、他のAWSリソースを操作する権限を与えられることです。
例:
EC2インスタンスがS3へファイルをアップロードしたい場合
→ EC2にS3アクセス権限を持つIAMロールをアタッチします。
Lambda関数がDynamoDBを操作する場合も同様です。
また、IAMユーザーは特定の個人に固定されていますが、ロールは必要とする任意の人やサービスが引き受けることができる権限のかたまりです。
そのため、普段はアクセス権のないユーザーやアプリケーション、サービスにも、ロールを通して一時的にアクセス権を委譲することができます。
ポリシー
ポリシーは、どのAWSリソースに対して、どんな操作を許可または拒否するかを定義したルールです。
JSON形式で記述され、IAMユーザー、グループ、ロールにアタッチして利用します。
AWSにはあらかじめ多くのポリシーが用意されており、必要に応じて独自のポリシーを作成することもできます。
3種類のポリシー
| 種類 | 管理主体 | 概要 |
|---|---|---|
| AWS管理ポリシー | AWS | AWSがあらかじめ用意・管理しているポリシー。代表的な権限セットが揃っており、すぐに利用できる。 |
| カスタマー管理ポリシー | ユーザー | 組織や要件に合わせてユーザーが独自に作成・管理する再利用可能なポリシー。 |
| インラインポリシー | ユーザー | 特定のユーザー、グループ、またはロールに直接埋め込むポリシー。個別の制御に利用。 |
以下はAWSが既に用意しているポリシーの一部です。

ポリシーはJSONで定義することができます。
JSONで定義されたポリシー
IAM ポリシーステートメントの基本構造は以下のとおりです。
- Effect は、アクセスを許可するか、拒否するかを示す。
- Action は、AWS のサービスに対して実行できる API コール (例えば、cloudwatch:ListMetrics など) を指定する。
- Resource は、ポリシールールの対象となるエンティティの範囲を定義する (例えば、特定の Amazon S3 バケットや Amazon EC2 インスタンス、または任意のリソースを意味する * など)。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:GetSecurityGroupsForVpc"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "elasticloadbalancing:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "autoscaling:Describe*",
"Resource": "*"
}
]
}
IAMを触ってみる
グループにユーザーを追加する
あらかじめ、グループとユーザーは作成されているものとします。
-
コンソールからIAM>ユーザーグループ>メンバーを追加したいグループを選択

-
ユーザー>ユーザーを追加

-
ユーザーを選択>ユーザーを追加

まとめ
ロールがかなりややこしいなと思いました。
引き続き他のサービスも触ってみようと思います!
Discussion