koishitori
@koishitori (平野 裕生)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

AWSでAssumeRoleの後始末ってどうしてます?

わからないこと

  • AssumeRoleのセッションを利用後どうするのが良いのか
  • パラレル実行で利用している場合は、クレデンシャル情報の共有した方がいいのか
  • 共有するのであればどこで共有するのが良いのか

AWSで他アカウントのリソースを制御するときAssumeRoleしますが、処理後にセッションを無効化する方法は

  • duration-secondsで最低の900秒にして期限切れを待つ
  • インラインポリシーで現在時刻以前をDenyする

シリアルな処理であれば単純に後者を選べばいいのかなと思うが、並行実行した際は後者だと他の処理を途中で止めてしまう。ここで、どのようにAssumeRoleの後処理をすべきか問題が出てくる。

  • パラレルにセッションを取得(duration-secondsで最低の900秒にする)・処理を実施して、15分間リソース制御できる複数のセッションを野放しにする
  • 他のStepfunctionsでAssumeRoleしてクレデンシャルをどこかに保管してパラレル処理を行い。処理後、インラインポリシーで現在時刻以前をDenyに設定する

ただし、この処理を行うのであればクレデンシャルはParameterStoreなのかPayloadにするのか伝搬方法が悩ましい

自分で試したこと

コンソールでロールに対して、「アクティブなセッションの無効化」を押して現在時刻以前をDenyにするポリシーがアタッチされ、使えなくなることを確認した。実際システムで無効化するのであれば、無効化処理を実行するLambda等を作って、Invoke権限だけ実行ロールにつけておけばよいと感じた。なぜならば、iam:PutRolePolicyをAssumeRoleするセッションに持たせてしまうと、セッションが乗っ取られた際に好きなポリシーを追加できてしまい、何でもできてしまうのではないかと危惧している。(未検証)

0

Your answer might help someone💌