[アップデート] Amazon Verified Permissions でポリシーストアに削除保護を設定できるようになりました

[アップデート] Amazon Verified Permissions でポリシーストアに削除保護を設定できるようになりました

Clock Icon2025.04.13

いわさです。

AWS のマネージドな認可サービスである Amazon Verified Permissions では、ポリシーストアにポリシーを格納することで権限管理を行うことができます。
昨今の Verified Permissions のアップデート[1]で、カスタムアプリケーション上に認可設定の管理機能を組み込みもなっています。

そうした場合にポリシーストアのデータストアとしての特性が強くなるのですが、これまで他のデータストアと同じように削除保護を行うことはできませんでした。
もちろん削除を拒否するポリシーを行うことは IAM でできるのですが、強い権限を持つインフラ管理者があやまってポリシーを削除する可能性がありました。

これが先日のアップデートで AWS API 経由で削除保護を有効化できるようになりました。AWS CLI の場合、v1.38.33 以上から利用が可能です。

https://github.com/aws/aws-cli/commit/f879d9f4d4faddeacbc4b3105b781b395128a069

本日時点でマネジメントコンソール上から有効化するインターフェースは確認できませんでしたがもしかしたらそのうち実装されるかもしれません。

既存ポリシーストアの削除保護ステータスを確認してみる

前述のとおり 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"
}

既存ポリシーストアは全てdeletionProtectionDISABLEDになっているはずで、新規ポリシーストアについてもDISABLEDのはずです。
削除保護機能はデフォルトでは無効化されています。

削除保護を有効化する

create-policy-storeで新規ポリシーストア作成時にdeletion-protectionは指定可能ですし、update-policy-storeで既存ポリシーストアの削除保護設定を変更することも可能です。

今回は作成済みのポリシーストアに対して削除保護を有効化してみます。
deletionProtectionENABLEDを指定するだけです。

% 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で確認してみましたが削除保護が有効化されていることが確認できました。

削除保護が有効化されているときの削除動作

削除保護が有効化されているポリシーストアの削除を試みてみましょう。
マネジメントコンソールであればポリシーストアの設定メニュー内にある「このポリシーストアの削除」から削除可能です。

5B609529-C89B-4A6A-B419-81518F207F35.png

私はてっきり削除操作を行った時に IAM 権限エラーの赤いバナーが表示されるのかなと思ったのですが、そうではなくて確認ダイアログの削除ボタンが押せなくなっていました。このパターンあまり見ないな。

F141FCDC-384D-41EE-9D10-0D0FC39AB2F7_4_5005_c.jpeg

削除保護が有効化されていない場合は次のようにボタンを押すことができます。

7D55D20C-6A00-44DC-9C98-F5DCC2EA3A47.png

マネジメントコンソール上はユーザーインターフェース側で削除できないようになっていましたが、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 を採用されている方もたまに見るようになりました。是非ポリシーストアの削除保護を有効化しておきましょう。

脚注
  1. [アップデート] Amazon Verified Permissions で複数のポリシー内容を一括で取得出来るようになりました | DevelopersIO ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.