Service Catalogで共通の製品を管理し、組織内の複数アカウントへ配布したい場合、ポートフォリオをAWS OrganizationsのOUへ共有できます。ここで混同しやすいのが、ポートフォリオを作る権限と、組織構造を使って共有する役割です。
通常のメンバーアカウントでも、自分のポートフォリオを作成したり、アカウントIDを指定して共有したりできます。一方、Organizationsを使った共有を別のメンバーアカウントから運用するには、委任管理者の設定が必要です。
まず、共有先の指定方法を選ぶ
| 方式 | 共有先の指定 | 管理アカウント以外から運用する場合 |
|---|---|---|
| アカウント間共有 | 共有先のアカウントID | 委任管理者であること自体は必須ではない |
| Organizations経由の共有 | 組織内アカウント、OU、組織全体 | Service Catalogの委任管理者を使用する |
OUに属するアカウントへ継続的に配布したい場合は、Organizations経由を検討します。共有範囲を親OUにすると、その配下の子OUも対象になるため、最初に配布対象を明確にします。方式の詳細はポートフォリオ共有の公式資料を参照してください。
準備は「連携の有効化→委任管理者の登録→OU共有」の順
たとえば共通基盤用アカウントで製品を管理する場合、次の役割分担になります。
- 組織の管理アカウントで、Service CatalogとOrganizationsの連携を有効にする。
- 管理アカウントから、共通基盤用アカウントをService Catalogの委任管理者に登録する。
- 委任管理者アカウントでポートフォリオを作成・管理し、対象OUへ共有する。
- 共有先で利用者のアクセスと製品の起動条件を確認する。
「特定のアカウントでService Catalogを使うだけ」なら、必ず委任が必要という意味ではありません。委任が関係するのは、そのアカウントをOrganizations経由の共有管理に使う場合です。
1. 信頼されたアクセスはService Catalog側から有効にする
Organizationsとの連携では、信頼されたアクセスが前提になります。CLIを使う場合は、組織の管理アカウントから次のService Catalog側の操作を行います。プロファイル名とリージョンは環境に合わせて変更してください。
aws servicecatalog enable-aws-organizations-access --profile management --region ap-northeast-1
このAPIはService Catalogの組織共有機能を有効にし、内部でOrganizations側の EnableAWSServiceAccess も呼び出します。委任管理者からは実行できません。詳しくはenable-aws-organizations-accessを確認してください。
Organizations側の enable-aws-service-access だけを実行する操作と、Service Catalog側の組織共有機能の有効化は同じ範囲ではありません。AWSも、可能な限りサービス側のコンソールやツールで連携を有効にする方法を推奨しています。手順はService CatalogとOrganizationsの統合に記載されています。
2. 製品を管理するアカウントを委任管理者にする
連携の有効化後、管理アカウントから対象アカウントを登録します。次のアカウントIDは例です。
aws organizations register-delegated-administrator --profile management --account-id 111122223333 --service-principal servicecatalog.amazonaws.com
これは組織に対する管理権限を設定する操作です。登録先を確認し、組織管理者の運用手順に沿って実施します。登録後も、操作するIAMユーザーやロールには必要なAPI権限が求められます。「委任管理者アカウントにいる」というだけで、すべてのIAMプリンシパルが操作できるわけではありません。
3. 委任管理者で対象OUへ共有する
委任管理者アカウントで対象ポートフォリオを選び、共有先にAWS Organizationsの組織ノードを指定します。共有したいOUと、その配下に含まれるアカウントを確認します。
Organizations経由では、受け取り側がアカウント間共有と同じ手動インポートを行う必要はありません。共有先のService Catalogで、インポート済みポートフォリオとして確認できます。
共有は独立した製品コピーの配布ではなく、元のポートフォリオへの参照を共有する仕組みです。管理側で製品や制約を変更すると受け取り側にも反映されるため、製品バージョンの公開手順を決めておきます。
共有できた後に、利用者で確認する
ポートフォリオの共有と、利用者が製品を起動できることは別々に確認します。
- 共有先のインポート済みポートフォリオに表示されるか。
- 利用するIAMユーザー・ロールにアクセスが設定されているか。
- 起動制約や実行ロールが、受け取り側の環境で成立するか。
- テンプレートが参照するAMI、サブネット、パラメータなどが利用可能か。
- 実際の利用者権限で必要な製品を起動できるか。
特に、管理者では見えるが利用者には見えない場合は、共有範囲だけでなく利用者へのアクセス設定を確認します。テンプレートが他アカウント固有の値を前提にしている場合も、そのまま配布する前に見直します。
運用中はOU変更と共有設定を合わせて管理する
OUやアカウントの構成を変えたときは、配布対象が意図どおりかを再確認します。Service Catalogの組織アクセスを無効にすると、組織変更と既存共有の同期にも影響します。無効化・再有効化を行う場合の注意点は、上記の公式CLI資料にも記載されているため、共有を一時停止する軽い操作として扱わないようにします。
