SSM Documentと実行IAMロール
公式サイト:
AWS Systems Manager Automation
SSM DocumentでScriptを実行するにはaws:executeScriptでPythonなりのScriptを記述すれば良いわけであるが、1つの注意点として「Documentのランブック属性にロールを割り当てる」ことが必須となる。
ここにIAMロールを指定していない場合、SSM Documentを実行したIAMエンティティが仮にAdministratorAccess権限を持っていたとしても「権限がない」エラーで実行できないが、指定はIAMロール名ではなくIAMロールのARNであるため、他アカウントへの共有と相性が悪いことになる。
結論を言えば、指定したIAMロールARNが所属するアカウントでしか権限を得ることができないため、アカウント共有しても他のアカウントで使用できないことになる。
2023年頃までは、ここにはIAMロールのARNを固定で入れるしかできなかったが、2023年11月17日のランブック強化の際にランブックの入力パラメータとして指定することが可能になり、実行用のIAMロールARNをランブックに埋め込まないようにすることが可能になった。
他アカウントへの共有
下の図のように他のアカウントへSSM Documentを共有する。
共有されるSSM Documentは入力パラメータとしてIAMロールのARNを指定するようにする。
共有するアカウントでは実行用のIAMロールを作成し、実行時に入力パラメータとしてIAMロールのARNを指定するようにする。
よりセキュリティを高めるために
共有しているアカウント側を他人に操作させる場合(例えば、共有しているアカウント側を他社の人間に業務委託するような場合)、事故が起きないように仕組みを作っておくことが重要となるが、これまでの方式では入力パラメータとしてIAMロールを実行時に指定させる際、「IAMロールを取り違える」というリスクが発生する。
これを防止するには、共有しているアカウント側で新しいSSM Documentを作成し(以後、これを呼び出し用Documentと称する)、aws:executionAutomationによって共有のSSM Documentを呼び出す。
呼び出し用Documentではaws:executionAutomationのインプットとしてRuntimeParametersを選択し、入力値として共有のSSM Documentの入力パラメータである「実行用IAMロールのARN」を文字列として設定する。
この呼び出し用Documentを実行することで、IAMロールを取り違えすることなく共有のSSM Documentを安全に実行することができるようになるわけである。
履歴
- 2024/9/30 初稿