Systems Manager Automation にて承認者が自身で申請したワークフローを承認できないようにする方法を教えてください

2023.11.16

困っていること

Systems Manager Automation にて承認者が自身で申請したワークフローを承認できなくしたいです。
開発者と管理者を別けることが推奨されるものの、同一人物が行っている状況です。方法があれば教えてください。

どう対応すればいいの?

以下の方法が考えられます。

  • タグによる制御
  • MinRequiredApprovals に 1 より大きい数値を設定

タグによる制御

タグを条件キーとして "SendAutomationSignal" の実行を制御することは可能です。
以下の IAM ポリシー例を参考にご検討ください。
下記は "test:test" タグが付与されている場合、"SendAutomationSignal" アクションの実行を拒否します。そのため、実行したオートメーションに指定タグが付与されている場合、コンソールでの承認を実施すると承認が失敗します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ssm:*",
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": "ssm:SendAutomationSignal",
            "Resource": "*",
            "Condition": {
                "StringEquals": {"ssm:ResourceTag/sample": "sample"}
            }
        }
    ]
}

MinRequiredApprovals に 1 より大きい数値を設定

Systems Manager Automation Runbook にて次の実装をしてください。

  • aws:approve の Approvers に複数ユーザーを指定する
  • MinRequiredApprovals に 1 より大きい数値を設定する

MinRequiredApprovals には、オートメーションが再開されるために必要な承認の最低数を指定します。

MinRequiredApprovals

オートメーションが再開されるために必要な承認の最小数。値を指定しない場合、システムによるデフォルトは 1 です。このパラメータの値は、正の数にする必要があります。このパラメータの値は、Approvers パラメータで定義された承認者の数を超えることはできません。

上記の設定により、"Approvers" に指定されたユーザーが実行したオートメーションであっても、必ず実行者以外の第三者の承認を必要とする様に構成可能です。
しかしながら、「必ず 2 ユーザーの承認を必要とする」ようになるため、当該構成が運用において負担となる可能性があることをご認識ください。

参考資料