[アップデート] Amazon Verified Permissions のポリシーストアがタグ機能をサポートしたので ABAC を試してみた
いわさです。
Amazon Verified Permissions はポリシーストアに Cedar 形式の認可ポリシーを設定しておくことで、認可処理の条件判定部分を AWS サービスで管理させることが出来ます。
先日のアップデートでこのポリシーストアがタグ機能をサポートしたようです。
実はこれまでコスト分類タグとかも使えなかったのでちょっと不便だったのですが、今回のアップデートでコスト管理がしやすくなったり、あとはアナウンスによるとポリシーストアへのアクセス制御にも使えるようになったようです。
上記から「おっ、ABAC (attribute-based access control) もサポートされたのかな」と思ったのですが IAM 側のドキュメントを見てみるとまだ Verified Permissiosn の ABAC サポートがされているような記載になっていませんでした。
AWS services that work with IAM - AWS Identity and Access Management より
ただ、試してみたところ ABAC も問題なく機能していました。
本記事ではタグ設定方法や ABAC 動作確認の様子を紹介します。
タグ付け
タグ付けの方法ですが、ポリシーストアの設定画面に新たにタグ管理エリアが追加されていました。
まぁ AWS のいつものタグなのでそれ以上書くこともないんですけども。
ABAC を試す
ということで本題の ABAC を試してみます。
タグ機能が使えても ABAC は使えないというパターンもあるので、ドキュメントどおりまだ未サポートの可能性もあります。
ABAC は属性(タグ)ベースによる IAM アクションのコントロールを行う手法で、例えば今回の Verified Permissions であれば運用環境のポリシーストアへのアクセスを拒否したい場合、従来は ARN を指定して個別指定が必要だったのですが、運用環境用のタグを指定することで一括指定することが出来ます。
Permissions boundary とか SCP とか、共通ルールでガードレール的に使いたい時に特に設定が楽になります。
以下はポリシーストアへのタグが無い状態でのアクセスです。
普通にポリシーストアにアクセス出来ていますね。
% aws verifiedpermissions get-policy-store --policy-store-id 3WPzZ9zFsRbSSoAJuGJn6g --profile hoge
{
"policyStoreId": "3WPzZ9zFsRbSSoAJuGJn6g",
"arn": "arn:aws:verifiedpermissions::123456789012:policy-store/3WPzZ9zFsRbSSoAJuGJn6g",
"validationSettings": {
"mode": "STRICT"
},
"createdDate": "2024-06-09T21:26:03.823745+00:00",
"lastUpdatedDate": "2025-04-12T19:23:40.913403+00:00",
"deletionProtection": "ENABLED"
}
ポリシーストアにタグを設定します。
今回はenv
というキーに対してprod
を設定しました。ありがちなやつです。
ここで、対象 IAM プリンシパルに対して運用環境へのアクセスを拒否するポリシーを追加設定します。
条件キーでaws:ResourceTag/env
を指定します。
再び先ほどのポリシーストアにアクセスしてみます。
% aws verifiedpermissions get-policy-store --policy-store-id 3WPzZ9zFsRbSSoAJuGJn6g --profile hoge
An error occurred (AccessDeniedException) when calling the GetPolicyStore operation: User: arn:aws:iam::123456789012:user/hoge is not authorized to perform: verifiedpermissions:GetPolicyStore on resource: arn:aws:verifiedpermissions::123456789012:policy-store/3WPzZ9zFsRbSSoAJuGJn6g with an explicit deny in an identity-based policy
おっ、拒否されましたね。拒否ポリシーが効いている。
では運用環境のタグを設定していない他のポリシーストアだとどうでしょうか。
% aws verifiedpermissions get-policy-store --policy-store-id ScnUnieCrvZdpw4ufPvaJQ --profile hoge
{
"policyStoreId": "ScnUnieCrvZdpw4ufPvaJQ",
"arn": "arn:aws:verifiedpermissions::123456789012:policy-store/ScnUnieCrvZdpw4ufPvaJQ",
"validationSettings": {
"mode": "OFF"
},
"createdDate": "2024-08-13T20:58:11.061234+00:00",
"lastUpdatedDate": "2024-08-13T22:36:42.662086+00:00",
"description": "hoge0814oidc",
"deletionProtection": "DISABLED"
}
こちらは期待どおりアクセス出来ますね。
さいごに
本日は Amazon Verified Permissions のポリシーストアがタグ機能をサポートしたので ABAC を試してみました。
特に、単独の AWS アカウント内に複数環境や複数サービスが混在している時に環境分離を行いたい時、ABAC は役に立ちます。
このあたりの利用方法や、ABAC 可能/不可能なサービスがあることを知っておきましょう。