[小ネタ] マルチパーティ承認はチーム内の過半数がNGだとしても設定したしきい値のOKがあれば承認されます

[小ネタ] マルチパーティ承認はチーム内の過半数がNGだとしても設定したしきい値のOKがあれば承認されます

ので、しきい値の設定は適切に行いましょう
2026.04.29

こんにちは、クラウド事業本部 コンサルティング部の荒平(@eiraces)です。
AWS Organizationsの機能のひとつであるマルチパーティ承認ですが、昨今はランサムウェア対策の文脈でAWS Backupと組み合わせて登場するシーンが多くなっていると思います。

https://dev.classmethod.jp/articles/aws-reinforce-organizations-multi-party-approval/

今回はマルチパーティ承認に関する小ネタを1つ実験して紹介してみます。

承認チームに5人所属していてかつ最小承認人数が2の状態で、 先にNGが3人、その後OKが2人となったときの挙動 はどうなるでしょうか。
ドキュメントには以下の記載があります。

チームは、保護されたオペレーションリクエストの E メール通知を受け取る承認者 (実質的には、マルチパーティー承認の当事者部分) で構成されます。これらの E メールは、リクエストの承認セッションが開始されたことを確認します。承認に必要な最少人数に達すると承認が付与されます。

https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/multipartyapproval.html

素直に読むと、承認人数がしきい値(今回は2人)に達したときとあるので5人目がOKをクリックしたタイミングでそのセッションが承認されるように見えます。

先に結果から

タイトル通りで、「チーム内の過半数がNGだとしても設定したしきい値のOKがあれば承認」されます。AWSドキュメントの通りですね。
そのため、しきい値の設定には注意する必要があります。承認チームのサイズに併せて設計しましょう。
承認チームは20人まで所属できるのですが、最小承認人数は N/2(N+1)/2 が望ましいと思います。とすると承認チームのサイズも5人〜8人くらいが良さそうでしょうか。

やってみた

以下、5人が所属している承認チームを使って実験します。最小の承認数は2人にしています。

ScreenShot 2026-04-29 at 22.18.52

チームに変更を加えてみます。何でもいいのですが、今回は最小承認数を2から3にしてみます。

image-20260429222237963

最初の3人のオペレーションでは「拒否(NG)」をクリックしてみます。

ScreenShot 2026-04-29 at 22.24.16

自身の応答状況は「オペレーション履歴」から確認できます。(他のメンバーの承認状況は確認できない)

ScreenShot 2026-04-29 at 22.29.46

なお、管理アカウント側から aws mpa get-sessionコマンドを叩けば、メンバーの承認状況が確認できます。
AWSコンソールからはどうやら表示できないようでした。

$ aws mpa get-session --session-arn arn:aws:mpa:us-east-1:000000000000:session/approve-team-e0bfdb2vd4rp/129ff60c-4bce-3049-87d6-b6774f2de2c0
{
    "SessionArn": "arn:aws:mpa:us-east-1:000000000000:session/approve-team-e0bfdb2vd4rp/129ff60c-4bce-3049-87d6-b6774f2de2c0",
    "ApprovalTeamArn": "arn:aws:mpa:us-east-1:000000000000:approval-team/approve-team-e0bfdb2vd4rp",
    "ApprovalTeamName": "approve-team",
    "ProtectedResourceArn": "arn:aws:mpa:us-east-1:000000000000:approval-team/approve-team-e0bfdb2vd4rp",
    "ApprovalStrategy": {
        "MofN": {
            "MinApprovalsRequired": 2
        }
    },
    "NumberOfApprovers": 5,
    "InitiationTime": "2026-04-29T13:22:22.825000+00:00",
    "ExpirationTime": "2026-04-30T13:22:22.825000+00:00",
    "Description": "A change to an approval team has been requested.",
    "Metadata": {
        "New minimum Approvers required": "3",
        "Old minimum Approvers required": "2"
    },
    "Status": "PENDING",
    "ActionName": "mpa:UpdateApprovalTeam",
    "RequesterServicePrincipal": "mpa.amazonaws.com",
    "RequesterPrincipalArn": "arn:aws:iam::000000000000:role/xxx",
    "RequesterAccountId": "000000000000",
    "RequesterRegion": "us-east-1",
    "ActionCompletionStrategy": "AUTO_COMPLETION_UPON_APPROVAL",
    "ApproverResponses": [
        {
            "ApproverId": "ff497bf8-085a-4293-819a-853aad27a4c2",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "97045ad8-00c1-7003-db10-a2cc80db58a9",
            "Response": "REJECTED",
            "ResponseTime": "2026-04-29T13:26:27.190000+00:00"
        },
        {
            "ApproverId": "4d5461b9-3b23-458f-b6c6-c9c4d8a3a587",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "77e46a78-70e1-7059-c3cc-f7e844a83d91",
            "Response": "REJECTED",
            "ResponseTime": "2026-04-29T13:27:37.860000+00:00"
        },
        {
            "ApproverId": "7ff74481-39e3-4338-a522-ac35baa9a1ef",
            "Response": "NO_VOTE"
        },
        {
            "ApproverId": "1e47a42a-419f-441f-9407-4436817c15f8",
            "Response": "NO_VOTE"
        },
        {
            "ApproverId": "bddb6940-eeae-4eb7-b291-397637a2c29a",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "37e42a38-9001-705f-05f7-98621cf905e7",
            "Response": "REJECTED",
            "ResponseTime": "2026-04-29T13:25:31.142000+00:00"
        }
    ],
    "AdditionalSecurityRequirements": [
        "APPROVER_VERIFICATION_REQUIRED"
    ]
}

現状、 REJECTED が3人になっており、承認タスク自体は PENDING になっていることが分かります。

続いて、4人目・5人目でOK回答してみます。

ScreenShot 2026-04-29 at 22.39.04

すると、最低限必要な承認(今回変更リクエストしたパラメータ)が3となり、タスクが承認されていました。

再度 aws mpa get-session を叩いて確認してみます。

~ $ aws mpa get-session --session-arn arn:aws:mpa:us-east-1:000000000000:session/approve-team-e0bfdb2vd4rp/129ff60c-4bce-3049-87d6-b6774f2de2c0
{
    "SessionArn": "arn:aws:mpa:us-east-1:000000000000:session/approve-team-e0bfdb2vd4rp/129ff60c-4bce-3049-87d6-b6774f2de2c0",
    "ApprovalTeamArn": "arn:aws:mpa:us-east-1:000000000000:approval-team/approve-team-e0bfdb2vd4rp",
    "ApprovalTeamName": "approve-team",
    "ProtectedResourceArn": "arn:aws:mpa:us-east-1:000000000000:approval-team/approve-team-e0bfdb2vd4rp",
    "ApprovalStrategy": {
        "MofN": {
            "MinApprovalsRequired": 2
        }
    },
    "NumberOfApprovers": 5,
    "InitiationTime": "2026-04-29T13:22:22.825000+00:00",
    "ExpirationTime": "2026-04-30T13:22:22.825000+00:00",
    "CompletionTime": "2026-04-29T13:38:03.090000+00:00",
    "Description": "A change to an approval team has been requested.",
    "Metadata": {
        "New minimum Approvers required": "3",
        "Old minimum Approvers required": "2"
    },
    "Status": "APPROVED",
    "ExecutionStatus": "EXECUTED",
    "ActionName": "mpa:UpdateApprovalTeam",
    "RequesterServicePrincipal": "mpa.amazonaws.com",
    "RequesterPrincipalArn": "arn:aws:iam::000000000000:role/xxx",
    "RequesterAccountId": "000000000000",
    "RequesterRegion": "us-east-1",
    "ActionCompletionStrategy": "AUTO_COMPLETION_UPON_APPROVAL",
    "ApproverResponses": [
        {
            "ApproverId": "ff497bf8-085a-4293-819a-853aad27a4c2",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "97045ad8-00c1-7003-db10-a2cc80db58a9",
            "Response": "REJECTED",
            "ResponseTime": "2026-04-29T13:26:27.190000+00:00"
        },
        {
            "ApproverId": "4d5461b9-3b23-458f-b6c6-c9c4d8a3a587",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "77e46a78-70e1-7059-c3cc-f7e844a83d91",
            "Response": "REJECTED",
            "ResponseTime": "2026-04-29T13:27:37.860000+00:00"
        },
        {
            "ApproverId": "7ff74481-39e3-4338-a522-ac35baa9a1ef",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "67d4aa68-10c1-7036-b588-478fbf70317c",
            "Response": "APPROVED",
            "ResponseTime": "2026-04-29T13:37:52.842000+00:00"
        },
        {
            "ApproverId": "1e47a42a-419f-441f-9407-4436817c15f8",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "37e42ac8-50d1-7040-0bb3-51020bd50a30",
            "Response": "APPROVED",
            "ResponseTime": "2026-04-29T13:37:15.004000+00:00"
        },
        {
            "ApproverId": "bddb6940-eeae-4eb7-b291-397637a2c29a",
            "IdentitySourceArn": "arn:aws:mpa:us-east-1:000000000000:identity-source/IamIdentityCenter",
            "IdentityId": "37e42a38-9001-705f-05f7-98621cf905e7",
            "Response": "REJECTED",
            "ResponseTime": "2026-04-29T13:25:31.142000+00:00"
        }
    ],
    "AdditionalSecurityRequirements": [
        "APPROVER_VERIFICATION_REQUIRED"
    ]
}
(END)

REJECTED が3人、 APPROVED が2人となっていますが、最小承認人数が2人だったためタスクとしてはAPPROVED/EXECUTED になっていました。

おわりに

NGのほうが多いのにタスクとしては承認されるというのは少し違和感がありますね。これを防ぐためには適切なしきい値を設定できているかが重要になります。
最小承認人数は2人から選べますが、承認チームのサイズにあわせて適切な人数を設定しましょう。

このエントリが誰かの助けになれば幸いです。
それでは、クラウド事業本部 コンサルティング部の荒平がお送りしました!

この記事をシェアする

関連記事