Amazon QuickSight でサブスクリプション削除保護トグルボタンが操作出来なくなる場合に対処する

2022.12.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

先日 Amazon QuickSight でサブスクリプションの削除保護が出来ることを紹介しました。

削除保護設定を変更する際には QuickSight の管理画面からトグルボタンの ON/OFF を切り替えるのですが、今回そのトグルボタンを押下しても切り替わらない人を観測しました。

権限周りが怪しそうですが...本日は実際にその事象を再現させて原因を特定してみました。

特に権限制御していない状態

調査前に自分のを確認してみます。
特に何も制御していない管理者権限ユーザーです。

こちらは問題なくてトグルボタンの操作が出来ました。

UpdateAccountSettings イベントを拒否する

前回の記事でトグルボタンの操作時に UpdateAccountSettings イベントが実行されていることが CloudTrail から確認出来ていました。
これはかなり怪しいかなと思いますが、実際にこちらのアクションを拒否した状態での動作を確認していませんでしたので、こちらを試してみます。

シンプルに IAM ポリシーで対象アクションを拒否するだけです。
ちなみにこの UpdateAccountSettings は QuickSight サブスクリプションのデフォルト名前空間や通知先メールアドレスを変更するアクションでもあります。
削除保護機能が最近登場した機能なので意図せずに拒否設定している場合もありえますね。

UpdateAccountSettings を拒否したポリシーを IAM ロールへアタッチし、この状態で QuickSight へアクセスしてみます。

トグルボタンが操作出来なくなりました。

確認のために CloudTrail のログを見てみると拒否されて設定更新に失敗していることがわかります。

{
    "eventVersion": "1.08",
    "userIdentity": {
:
    },
    "eventTime": "2022-12-20T23:38:08Z",
    "eventSource": "quicksight.amazonaws.com",
    "eventName": "UpdateAccountSettings",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "errorCode": "AccessDenied",
    "errorMessage": "User: arn:aws:sts::123456789012:assumed-role/cm-iwasa.takahito/cm-iwasa.takahito is not authorized to perform: quicksight:UpdateAccountSettings on resource: arn:aws:quicksight:ap-northeast-1:123456789012:* with an explicit deny in an identity-based policy",
    "requestParameters": null,
    "responseElements": null,
:
}

やはり UpdateAccountSettings 操作が拒否される状態だと、トグルボタンが操作できなくなるという推測は正しそうです。

同じ事象で解決したい場合は IAM ポリシーの見直し、あるいは SCP(Service control policie)をアカウント管理者などへ確認してみるのが良さそうです。

AWS CLI で OFF にする

QuickSight ポータルで権限が有効な場合もダブルクリックを繰り替えさないとトグルボタンが反応しないシーンがありました。
AWS CLI でも削除保護を無効化することが出来ますので、AWS CLI を利用出来る方で権限が付与されていればこちらの方法だと確実に設定変更が出来ます。

# 変更前を確認
% aws quicksight describe-account-settings --aws-account-id 123456789012
{
    "Status": 200,
    "AccountSettings": {
        "AccountName": "iwasa-quicksight",
        "Edition": "ENTERPRISE",
        "DefaultNamespace": "default",
        "NotificationEmail": "hoge@example.com",
        "PublicSharingEnabled": false,
        "TerminationProtectionEnabled": true
    },
    "RequestId": "f4eb1ac2-0402-4cba-a89c-0d50832205f2"
}

# 削除保護を無効化
% aws quicksight update-account-settings --aws-account-id 123456789012 --default-namespace default --no-termination-protection-enabled
{
    "Status": 200,
    "RequestId": "26c0e6f8-bd2b-4f05-9624-c9fd35414e91"
}

# 変更後を確認
% aws quicksight describe-account-settings --aws-account-id 123456789012
{
    "Status": 200,
    "AccountSettings": {
        "AccountName": "iwasa-quicksight",
        "Edition": "ENTERPRISE",
        "DefaultNamespace": "default",
        "NotificationEmail": "hoge@example.com",
        "PublicSharingEnabled": false,
        "TerminationProtectionEnabled": false
    },
    "RequestId": "0f72d66c-287e-4508-a584-c6bea3796e02"
}

実際に無効化されていますね。

さいごに

本日は Amazon QuickSight でサブスクリプション削除保護トグルが操作出来ない問題を解決するために調査してみました。
小ネタな感じですが、同じ用な事象で困っている方の参考になれば幸いです。