[小ネタ] AWS TEAM で Secrets Manager リソースを作成するアカウントについて
シークレットはデプロイ先のアカウントに作成する必要があります。
TEAM で使用する Secrets Manager シークレットについて
TEAM allows you to use external repositories for deploying the solution. Create a secret in AWS Secret Manager containting your repository url and Access token in Secrets manager as shown below
【GitHub】AWS CodeCommit無しでのTEAM for IAM Identity Centerのデプロイ方法とアップデート方法 - サーバーワークスエンジニアブログ
- url
- https://github.com/xxxxxxxxxxxxxxxxx(準備時に自分用にコピーしたTEAMリポジトリのURL)(※クローン元の公式ソースコードの方ではないので注意)
- AccessToken
- 準備段階で払い出した個人用アクセストークン(Classic)
用途については上記資料の通りですが、Secrets Manager のシークレットを以下のどちらのアカウントで作成すればよいのかがわかりませんでした。
- Organizations の管理アカウント
- 各種機能を委任したデプロイ先のメンバーアカウント
管理アカウントにシークレットを作成した場合
管理アカウントにシークレットを作成した状態で deploy.sh を実行したところ、デプロイ先のメンバーアカウントの CloudFormation スタックで以下のエラーが発生しました。
Secrets Manager can't find the specified secret.
上記の通りシークレットが見つからない旨のエラーでした。
メンバーアカウントにシークレットを作成した場合
デプロイが成功することを確認しました。
このことから、TEAM を委任先のメンバーアカウントにデプロイする場合にはメンバーアカウント側にシークレットを作成する必要があることがわかりました。
補足
Deploying TEAM into management account
TEAM を管理アカウントに導入することも可能であるため、管理アカウントにデプロイする場合には管理アカウントにシークレットを作成する必要があると思われます。
※未検証
ただし、上記ドキュメントの通り TEAM は委任されたメンバーアカウントにデプロイすることが推奨されています。
AWS Organizations 観点でも管理アカウントへのアクセスは最小限にとどめて、各種機能を委任することが推奨されています。
Delegated administrator for AWS services that work with Organizations - AWS Organizations
We recommend that you use the AWS Organizations management account and its users and roles only for tasks that must be performed by that account.
まとめ
今回は AWS TEAM で Secrets Manager リソースを作成するアカウントについて紹介しました。
どなたかの参考になれば幸いです。
Discussion