[アップデート] Amazon Verified Permissions でポリシーストアに削除保護を設定できるようになりました
いわさです。
AWS のマネージドな認可サービスである Amazon Verified Permissions では、ポリシーストアにポリシーを格納することで権限管理を行うことができます。
昨今の Verified Permissions のアップデート[1]で、カスタムアプリケーション上に認可設定の管理機能を組み込みもなっています。
そうした場合にポリシーストアのデータストアとしての特性が強くなるのですが、これまで他のデータストアと同じように削除保護を行うことはできませんでした。
もちろん削除を拒否するポリシーを行うことは IAM でできるのですが、強い権限を持つインフラ管理者があやまってポリシーを削除する可能性がありました。
これが先日のアップデートで AWS API 経由で削除保護を有効化できるようになりました。AWS CLI の場合、v1.38.33 以上から利用が可能です。
本日時点でマネジメントコンソール上から有効化するインターフェースは確認できませんでしたがもしかしたらそのうち実装されるかもしれません。
既存ポリシーストアの削除保護ステータスを確認してみる
前述のとおり AWS CLI v1.38.33 以上である必要があるので事前にアップデートしておきます。
% aws-v1 --version
aws-cli/1.38.33 Python/3.9.8 Darwin/23.6.0 botocore/1.37.33
削除保護はポリシーストアごとに設定します。
get-policy-store コマンドのdeletionProtection
で削除保護ステータスが確認可能です。
% aws-v1 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.823745Z",
"lastUpdatedDate": "2024-06-09T21:26:03.823745Z",
"description": "ApiGateway: hoge0610api (85h8tlpgsc)/hoge0610stage ",
"deletionProtection": "DISABLED"
}
既存ポリシーストアは全てdeletionProtection
がDISABLED
になっているはずで、新規ポリシーストアについてもDISABLED
のはずです。
削除保護機能はデフォルトでは無効化されています。
削除保護を有効化する
create-policy-storeで新規ポリシーストア作成時にdeletion-protection
は指定可能ですし、update-policy-storeで既存ポリシーストアの削除保護設定を変更することも可能です。
今回は作成済みのポリシーストアに対して削除保護を有効化してみます。
deletionProtection
にENABLED
を指定するだけです。
% cat hoge.json
{
"policyStoreId": "3WPzZ9zFsRbSSoAJuGJn6g",
"validationSettings": {
"mode": "STRICT"
},
"deletionProtection": "ENABLED"
}
% aws-v1 verifiedpermissions update-policy-store --cli-input-json file://hoge.json --profile hoge
{
"policyStoreId": "3WPzZ9zFsRbSSoAJuGJn6g",
"arn": "arn:aws:verifiedpermissions::123456789012:policy-store/3WPzZ9zFsRbSSoAJuGJn6g",
"createdDate": "2024-06-09T21:26:03.823745Z",
"lastUpdatedDate": "2025-04-12T19:23:40.913403Z"
}
% aws-v1 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.823745Z",
"lastUpdatedDate": "2025-04-12T19:23:40.913403Z",
"deletionProtection": "ENABLED"
}
最後にget-policy-store
で確認してみましたが削除保護が有効化されていることが確認できました。
削除保護が有効化されているときの削除動作
削除保護が有効化されているポリシーストアの削除を試みてみましょう。
マネジメントコンソールであればポリシーストアの設定メニュー内にある「このポリシーストアの削除」から削除可能です。
私はてっきり削除操作を行った時に IAM 権限エラーの赤いバナーが表示されるのかなと思ったのですが、そうではなくて確認ダイアログの削除ボタンが押せなくなっていました。このパターンあまり見ないな。
削除保護が有効化されていない場合は次のようにボタンを押すことができます。
マネジメントコンソール上はユーザーインターフェース側で削除できないようになっていましたが、AWS CLI からポリシー削除を試みてみるとどうなるでしょうか。
% aws-v1 verifiedpermissions delete-policy-store --policy-store-id 3WPzZ9zFsRbSSoAJuGJn6g --profile hoge
An error occurred (InvalidStateException) when calling the DeletePolicyStore operation: The policy store cannot be deleted because deletion protection is enabled. Deletion protection must be disabled first.
期待どおりポリシーストアの削除に失敗しました。良いですね。
さいごに
本日は Amazon Verified Permissions でポリシーストアに削除保護を設定できるようになったので使ってみました。
運用環境で Verified Permissions を採用されている方もたまに見るようになりました。是非ポリシーストアの削除保護を有効化しておきましょう。