A collection of notes and resources
S3バケットポリシーのPrincipal要素について整理いたします。
S3バケットポリシーのPrincipal要素は、誰がそのバケットにアクセスできるかを指定する重要な要素です。アクセス許可の対象となるIDやサービスを定義します。
特定のAWSアカウント全体にアクセスを許可します。
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
}
または短縮形式:
"Principal": {
"AWS": "123456789012"
}
特定のIAMユーザーにアクセスを許可します。
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/UserName"
}
特定のIAMロールにアクセスを許可します。
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/RoleName"
}
SAML/OIDCなどでフェデレーションされたユーザーにアクセスを許可します。
"Principal": {
"Federated": "arn:aws:iam::123456789012:saml-provider/ProviderName"
}
特定のAWSサービスにアクセスを許可します。
"Principal": {
"Service": "lambda.amazonaws.com"
}
よく使われるサービス例:
lambda.amazonaws.com - Lambda関数ec2.amazonaws.com - EC2インスタンスcloudfront.amazonaws.com - CloudFrontlogging.s3.amazonaws.com - S3アクセスログ配信cloudtrail.amazonaws.com - CloudTrailインターネット上の誰でもアクセス可能にします。
"Principal": "*"
または:
"Principal": {
"AWS": "*"
}
⚠️ 注意: パブリックアクセスは慎重に使用してください。
S3バケットのCanonical User IDを指定します(主にCloudFrontとの連携で使用)。
"Principal": {
"CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
}
配列形式で複数のプリンシパルを指定できます。
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/User1",
"arn:aws:iam::123456789012:user/User2",
"arn:aws:iam::123456789012:role/Role1"
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-xxxxxxxxxx"
}
}
}
]
}
Principal: "*"の使用は慎重にS3バケットポリシーについてさらに詳しい情報が必要な場合は、AWS公式ドキュメントを検索いたしますので、お知らせください。