TEAM(Temporary Elevated Access Management)ソリューションを使って、TEAMデプロイアカウントへの権限委譲ができるか検証してみた

TEAM(Temporary Elevated Access Management)ソリューションを使って、TEAMデプロイアカウントへの権限委譲ができるか検証してみた

Clock Icon2024.07.04

はじめに

こんにちは。AWS事業本部コンサルティング部に所属している和田響です。

この記事では、AWS IAM Identity Center において一時的なアクセス許可を与える仕組みを提供する Temporary Elevated Access Management (TEAM) ソリューションについて、TEAMをデプロイしたアカウント自体に対しても権限委譲ができるかを検証してみました。

TEAMについて

Temporary Elevated Access Management (以下TEAM)は、AWS IAM Identity Center において一時的なアクセス許可を与える仕組みを提供するソリューションで、Amplifyにデプロイされます。

例えば以下のように、申請者が権限を申請し、承認者がそれを承認することで、一時的な権限付与を可能にします。マルチアカウント環境の運用に非常に役にたつソリューションですね!

通常時
Untitled (84)

権限申請時
Untitled (85)

試したいこと

今回は__「TEAMをデプロイしたアカウントに対しても、一時的な権限が付与できるのか?」__ということを検証してみます。
Untitled (86)

先に結論

できた!

やってみる

前提

今回登場するのは以下のリソースです。

  • TEAMデプロイ先のAWSアカウント
  • デプロイされたTEAM
  • 承認用グループ(Admin-For-TEAM)
    • 承認用ユーザー(TEAM-Admin-Wada)
      • 運用ユーザーからの申請を承認する
  • 運用グループ(User-For-TEAM)
    • 運用ユーザー(TEAM-User-Wada)
      • 承認用ユーザーへ権限申請をする

Untitled (88)

現時点では承認ユーザー、運用ユーザーのいずれもTEAM以外にはアクセスできません。
IAM Identity Centerのアクセスポータルからそれぞれのユーザーでログインした場合、Accountsには何も表示されず
スクリーンショット 2024-07-04 22.53.04
ApplicationsにはTEAMのみが表示されます。
スクリーンショット 2024-07-04 22.53.09

TEAMのデプロイについてはこちらのブログを参照ください。(今回はデプロイが完了している前提で進めていきます)
https://dev.classmethod.jp/articles/deploy-temporary-elevated-access-management/

承認ルールを作成

まずは、Eligibility policy(誰に対してどのアカウントへアクセスを許可するか)を設定していきます。
承認ユーザー(TEAM-Admin-Wada)でTEAMにログインし、サイドタブから「Eligibility policy」を開き、「Create Eligibility policy」をクリックします。
スクリーンショット 2024-07-04 19.21.34

Entity typeはGroup、Groupに権限を付与したいグループ(今回はUser-For-TEAM)、Ticket No
は任意の数字、Accountsは権限を付与したいアカウント、Permissionには付与したい権限(今回はAdministratorAccess)、Max durationは権限付与時間の最大値を入力し、「Add Eligibility policy」をクリックします。
スクリーンショット 2024-07-04 19.20.16

続いて、サイドタブから「Approval policy」を開き、「Create Approvers」をクリックします。
スクリーンショット 2024-07-04 19.05.23

Entity typeはAccount、Accountsには権限を付与したいアカウント、Ticket Noは任意の数字、Approver Groupsに承認者が所属するグループ(今回はAdmin-For-TEAM)を選択し、「Add Approvers」をクリックします。
スクリーンショット 2024-07-04 19.12.13

権限申請

続いて、運用ユーザー(TEAM-User-Wada)でTEAMにログインし、権限の申請を行います。

サイドタブから「Create request」をクリックします。
スクリーンショット 2024-07-04 19.54.51

EmailはTEAMにログインしたユーザーのメールアドレスが自動で入力されます。
Accountは権限を付与したいアカウント、Roleは付与したい権限、Durationは権限付与の時間、Ticket noは任意の数字、Justificationには権限申請の理由を記載し、「Submit」をクリックします。
スクリーンショット 2024-07-04 19.55.28

これだけで申請は完了です。非常に楽ですね。

権限の承認

再び承認ユーザー(TEAM-Admin-Wada)でTEAMにログインし、サイドタブから「Approve requests」をクリックします。

スクリーンショット 2024-07-04 20.10.42

先ほどした申請を選択し、「Action」から「Approve」をクリックします。
スクリーンショット 2024-07-04 20.01.34
内容を確認し、Commentを入力し「Confirm」をクリックします。
スクリーンショット 2024-07-04 20.01.57

これで権限申請に対する承認も完了です。

運用ユーザーでログイン

最後に、運用ユーザー(TEAM-User-Wada)でログインし、申請したアカウントに対して権限が付与されているかを確認します。

IAM Identity Centerのアクセスポータルから、運用ユーザー(TEAM-User-Wada)でログインします。
スクリーンショット 2024-07-04 20.23.59

すると先ほどまでは何も表示されていなかったAccountsに、先ほど権限を申請したTEAMがデプロイされたアカウントが表示されました。
スクリーンショット 2024-07-04 20.24.58

AdministratorAccessをクリックしコンソールにログインすることができました!
スクリーンショット 2024-07-04 20.04.25

Amplifyのコンソールを開くと、TEAMがデプロイされているので、この記事で検証したかった「TEAMをデプロイしたアカウント自体に対しても権限委譲ができるか?」という疑問に対しては、「できた!」というまとめになります。  
スクリーンショット 2024-07-04 20.29.38

最後に

今回は、TEAMという便利なソリューションで実現可能なこと、不可能なことを整理するためにこのような検証してみました。

この結果で嬉しいことは、TEAMをデプロイするアカウントがそれ専用のものでなくても良いためTEAMを導入するハードルが下がったことでしょうか。

この記事がどなたかのお役に立てれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.