2
1

VPC エンドポイントポリシーのプリンシパルを書く時の注意点

Posted at

VPCエンドポイントポリシーを設計する際に、ゲートウェイ型のエンドポイントポリシーのPrincipalを定義したが、意図した動作にならないことに気づきました。
ゲートウェイエンドポイントでプリンシパルに定義する際にはaws:PrincipalArnを利用する必要があります。

AWS公式ドキュメントには

ゲートウェイエンドポイントでは、aws:PrincipalArn 条件キーを使用してプリンシパルへのアクセスを許可する必要があります。次のいずれかの形式でプリンシパルを指定すると、アカウントのすべてのユーザーとロールではなく、AWS アカウントのルートユーザーのみにアクセスが許可されます。

"AWS": "account_id"
"AWS": "arn:aws:iam::account_id:root"

インターフェイスエンドポイントの"AWS": "arn:aws:iam::account_id:root"プリンシパルの意味

インターフェイスエンドポイントでの意味はアカウントのすべてのユーザーとロールという意味になります。

Version: '2012-10-17'
Statement:
  - Effect: Allow
    Principal: 'AWS: "arn:aws:iam::account_id:root'
    Action: '*'
    Resource: '*'

ゲートウェイエンドポイントの"AWS": "arn:aws:iam::account_id:root"プリンシパルの意味

ゲートウェイエンドポイントの意味はAWS アカウントのルートユーザーという意味になります。

Version: '2012-10-17'
Statement:
  - Effect: Allow
    Principal: 'AWS: "arn:aws:iam::account_id:root'
    Action: '*'
    Resource: '*'

対応方法: ゲートウェイエンドポイントでの aws:PrincipalArn 条件キーの使用

ゲートウェイエンドポイントでは、aws:PrincipalArn 条件キーを使用してプリンシパルへのアクセスを許可する必要があります。これにより、特定のプリンシパルに対してアクセスを制限できます。

例: 特定のプリンシパルに対するアクセス制限

以下は、特定の IAM ユーザー(ユーザーA)にのみアクセスを許可し、他のプリンシパルにはアクセスを拒否する VPC エンドポイントポリシーの例です。

Version: '2012-10-17'
Statement:
  - Effect: Allow
    Principal: '*'
    Action: '*'
    Resource: '*'
    Condition:
      StringEquals:
        aws:PrincipalArn: arn:aws:iam::account_id:user/ユーザーA

このポリシーでは、ユーザーA に対してすべてのアクションとリソースへのアクセスを許可しています。同時に、aws:PrincipalArn 条件キーを使用して、ユーザーA 以外のプリンシパルに対するアクセスを制限しています。

この方法により、ゲートウェイエンドポイントを通じて特定のプリンシパルに対するアクセスを制限することができます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1