IAMポリシーのPrincipalとは?
IAM(Identity and Access Management)は、AWSのセキュリティ管理の重要な部分です。
IAMポリシーは、AWSリソースへのアクセス権を制御するためのルールを定義するもので、その中の「Principal」は誰がそのポリシーを適用されるかを指定します。
このブログ記事では、「Principal」について中学生でも理解できるように解説し、具体的な使用例も紹介します。
Principalとは?
Principalの基本概念
Principal(プリンシパル)は、IAMポリシーの中で「誰が」特定の操作を行うことができるかを指定する重要な要素です。
具体的には、ユーザー、グループ、ロール、サービスアカウントなどがPrincipalとなります。
Principalを適切に設定することで、AWSリソースへのアクセスを厳密に制御することができます。
Principalの書き方
Principalは、JSON形式のIAMポリシー内で指定します。
例えば、特定のユーザーにのみアクセスを許可する場合は以下のように書きます:
{
"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バケットのオブジェクトを読み取ることを許可しています。
{
"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に配列を使用して以下のように記述します。
{
"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にサービスプリンシパルを指定します。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
}
}
}
この例では、Lambdaサービスが特定のロールを引き受けることが許可されています。
まとめ
IAMポリシーのPrincipalは、AWSリソースへのアクセスを誰が行うかを定義する重要な要素です。
正しく理解し設定することで、セキュリティを強化し、リソースへの不正アクセスを防止することができます。
本記事では、具体的な使用例も紹介しましたので、ぜひ参考にしてください。