📖

AWS TEAMを導入し本番環境へのアクセスをよりセキュアに行えるようになった話

に公開

この記事は PeopleX Advent Calendar 2025 の5日目の記事です。

前日はBizDev増井による PeopleX AIロープレの責任者になりました。 です。


PeopleXではサービスを提供するクラウドプロバイダーとしてAWSを採用しています。
この度、セキュリティと統制強化の一環としてAWS TEAMを導入し本番環境へのアカウントアクセスを承認制に移行しました。

TEAM導入までの経緯

AWS TEAM (Temporary Elevated Access Management) はIAM Identity Centerのユーザーに対して一時的に特定の権限を付与するための仕組みとなります。

サービス運用中に障害対応、緊急メンテナンス、運用タスクの実施など、本番環境にアクセスしたくなる機会は数多く存在します。
従来は固定でそれぞれのメンバーの役割に応じて管理者、運用者などの権限を設定していましたが以下のような問題がありました

  • 一部のメンバーがAdministratorAccessのような特権を常時持つことのリスク
  • 個人のAWSのクレデンシャル漏洩時の不正アクセスリスク
  • いつ、誰が、何をやったかの証跡を確認しづらい[1]

TEAMを導入することで上記の課題に対して以下のような効果が期待できます

  • 期限付きのアクセス権を付与することでセキュリティリスクを最小限に抑える
  • いつ、誰が、どのアカウントで、何のために、何をやったか、それを誰が承認したか、の監査ログが残る

具体的にはTEAMを導入することで以下のようなログが残せるようになります

導入手順

基本的な導入手順は公式ドキュメントに詳しいですが、本記事では要点に絞ってお伝えします。

専用のAWSアカウントの作成

TEAMは組織管理アカウントではなく、専用のアカウントを分けて作成しましょう。
AWSのベストプラクティスでは組織管理アカウントにはリソースをデプロイすることは非推奨とされています。そのため別アカウントを作成しそこにデプロイを行うことを推奨します。

作成したアカウントには以下のサービスの委任管理者として設定します

  • Identity Center (sso.amazonaws.com)
  • CloudTrail (cloudtrail.amazonaws.com)
  • Account Management (account.amazonaws.com)
Terraformでのコード例
resource "aws_organizations_delegated_administrator" "account_management" {
  for_each = toset([
    "sso.amazonaws.com",        # Identity Center
    "cloudtrail.amazonaws.com", # CloudTrail Lake
    "account.amazonaws.com",    # Account Management
  ])

  account_id        = "111111111111" # TEAM用のアカウント
  service_principal = each.value
}

CloudTrail Lakeのorganization event datastoreの作成

監査ログを確認するために専用のDatastoreを作成します。
Organizationすべてのログを集めるために 組織内のすべてのアカウントについて有効化 にチェックを入れる事を忘れないようにします。

Terraformでのコード例
resource "aws_cloudtrail_event_data_store" "team_logs" {
  name                 = "team-logs"
  billing_mode         = "EXTENDABLE_RETENTION_PRICING"
  retention_period     = 365
  organization_enabled = true
}

deploy

TEAMのリポジトリをCloneし parameter.sh を作成します。

基本はコメントアウトされていない箇所を埋めていけばよいのですが、SecretManagerを使ってPrivate Repositoryからアプリを起動しないのであれば SECRET_NAME はコメントアウトしても問題ありません。

- SECRET_NAME=TEAM-IDC-APP
+ # SECRET_NAME=TEAM-IDC-APP

その後 deploy.sh を実行したらCloudFormationのStackが起動し、正常にデプロイが出来たらAmplifyのアプリケーションが起動しているはずです。

Cognitoとの連携

こちらのページを参考にCognitoのユーザープールを作成し、連携することでAWS Access Portalに TEAM IDC APP というアプリケーションが追加されています。こちらからTEAMアプリケーションへアクセスすることが可能となります。

脚注
  1. もちろんCloudTrailは有効にしていますが素の状態で簡単に特定の人のアクティビティを確認するのはなかなか難しいです ↩︎

PeopleXテックブログ

Discussion