IAMポリシーのPrincipalとは?

IAM(Identity and Access Management)は、AWSのセキュリティ管理の重要な部分です。

IAMポリシーは、AWSリソースへのアクセス権を制御するためのルールを定義するもので、その中の「Principal」は誰がそのポリシーを適用されるかを指定します。

このブログ記事では、「Principal」について中学生でも理解できるように解説し、具体的な使用例も紹介します。

Principalとは?

Principalの基本概念

Principal(プリンシパル)は、IAMポリシーの中で「誰が」特定の操作を行うことができるかを指定する重要な要素です。

具体的には、ユーザー、グループ、ロール、サービスアカウントなどがPrincipalとなります。

Principalを適切に設定することで、AWSリソースへのアクセスを厳密に制御することができます。

Principalの書き方

Principalは、JSON形式のIAMポリシー内で指定します。

例えば、特定のユーザーにのみアクセスを許可する場合は以下のように書きます:

json
 
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" } } }

上記の例では、arn:aws:iam::123456789012:user/Aliceという特定のユーザー(Alice)がexample_bucketというS3バケットのリスト操作を許可されています。

Principalの具体例

例1:特定のユーザーにアクセスを許可

以下のポリシーでは、特定のユーザー(Bob)がS3バケットのオブジェクトを読み取ることを許可しています。

json
 
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::example_bucket/*", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Bob" } } }

例2:複数のユーザーにアクセスを許可

複数のユーザーにアクセスを許可する場合、Principalに配列を使用して以下のように記述します。

json
 
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::example_bucket/*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/Alice", "arn:aws:iam::123456789012:user/Bob" ] } } }

上記の例では、AliceとBobの両方がexample_bucketにオブジェクトを追加することが許可されています。

例3:サービスにアクセスを許可

特定のAWSサービス(例えばLambda)にアクセスを許可する場合、Principalにサービスプリンシパルを指定します。

json
 
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "Service": "lambda.amazonaws.com" } } }

この例では、Lambdaサービスが特定のロールを引き受けることが許可されています。

まとめ

IAMポリシーのPrincipalは、AWSリソースへのアクセスを誰が行うかを定義する重要な要素です。

正しく理解し設定することで、セキュリティを強化し、リソースへの不正アクセスを防止することができます。

本記事では、具体的な使用例も紹介しましたので、ぜひ参考にしてください。