AWSのOrganizatinsについてまとめています。
AWS Organizationsは、メンバーアカウントを作成・管理する機能
AWS Organizationsで、AWSアカウントの作成、リソースの割当、アカウントのグループ化、アカウントやグループポリシーの適用、管理下の全アカウントの請求の一本化が可能です。
AWS Organizationsは、追加料金なしで 利用できます。
AWS Organizationsの利点
マルチアカウントの管理が可能。AWS CLI、SDK、API経由でアカウントを作成し、AWS CloudFormation StackSetsを使ってアカウントにリソースとアクセス許可を一元的にプロビジョニングできます。
新規アカウントのグループ化が可能。組織単位(OU)や、単一のアプリケーション、サービス提供するアカウントグループにグループ化できます。
アカウントの管理とモニタリングが可能。アカウント間での読み取り専用セキュリティアクセスの提供や、Amazon GuardDutyでの脅威の検出、IAM Access Analyzerで想定外のリソースへのアクセスの確認、Amazon Macieによる機密データの保護などをおこなうことができます。
Amazon Single Sign-On (SSO)でActive Directoryを使ってAWS アカウントとリソースへのアクセスの提供が可能。サービスコントロールポリシーをユーザ、アカウント、OUに適用し、AWS リソース、サービス、リージョンへのアクセス制御も可能です。
組織内のアカウントでAWSリソースを共有するには、AWS Resource Allocation Management (RAM) を使用します。AWS Virtual Private Cloud (VPC) サブネットを組織全体で共有したり、AWS License Managerでソフトウェアライセンスを一元的に管理したり、AWS Service Catalogでアカウント間でITサービスとカスタム製品のカタログを共有することが可能です。AWS CloudTrailを使うことで、コンプライアンスに対する監査が可能。メンバーアカウントが変更できないクラウド環境内のアクティビティのログを作成します。
Organizations を使う大きなメリットは、組織のアカウントで 1 つにまとめた一括請求。アカウント全体のリソースから使用量の表示、AWS Cost Explorerでコストの追跡、AWS Compute Optimizer でコンピューティングリソースの使用量を最適化などの一元管理が可能です。
AWS Organizationsの使い方
AWS Organizationsは、AWSマネジメントコンソールから操作が可能です。
関連)Organizations Management Console
AWSアカウントとして、ルートユーザ(管理アカウント)が既に作成されています。
AWSアカウントを追加するには、アカウント名、Eメールアドレス、IAMロール名、タグ付けをおこなって新規に作成するか、「既存のAWSアカウントを招待」を選んで、既存ユーザに招待のEメールを送る方法があります。
「サービス」の画面では、AWSサービスに対して「信頼できるアクセスを有効にする」設定が可能です。ただし、公式サイトによるとこの画面で有効化をおこなうのではなく、他のAWSサービスのコンソールを使用して、AWS Organizationsでの信頼できるアクセスを有効化または無効化することが推奨されています。
サービス名をクリックすると、「信頼されたアクセスを有効にする」ボタンが表示され、クリックすると有効化されます。以下は、AWS Backupの「信頼されたアクセスを有効にする」画面です。
「ポリシー」の画面では、AI サービスのオプトアウトポリシー、バックアップポリシー、サービスコントロールポリシー、タグポリシーの有効化、無効化が可能です。例えば、バックアップポリシーを有効化すると、組織全体のバックアップ計画をデプロイして、バックアップ計画の実行方法の一貫性を確保できます。
ポリシーを有効化するには、ポリシータイプ名をクリックして、「○○ポリシーを有効にする」ボタンをクリックします。以下は、サービスコントロールポリシー(SCP)の有効化の画面です。
メンバーアカウント作成の自動化
AWS Organizationsの操作は、AWSマネジメントコンソール以外にも、AWS CLI(コマンドラインインタフェース)や、SDKを使って各言語からの操作が可能です。AWS Organizaionsを操作するには、IAMユーザやIAMロールに、Organizationzを操作する権限を与えておく必要があります。
【関連記事】
▶AWSのIAMは、AWSサービスとリソースへのアクセス管理とアクセス分析が可能
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:*" ], "Resource": [ "*" ] } ] }
以下は、Python言語でSDKを使ってユーザアカウントを作成する例です。create_accountのパラメータには、アカウント名、メールアドレス、メンバーアカウントのIAMユーザにBilling情報へのアクセスを許可するかどうか(デフォルトでallow)、IAMロール名(デフォルトでOrganizationAccountAccessRole)を指定します。
import boto3 orgs = boto3.client('organizations',region_name='us-east-1') createAccountRequest = orgs.create_account( "AccountName": "membername1", "Email": "membermail1", "IamUserAccessToBilling": "allow", "RoleName": "OrganizationAccountAccessRole" )
メンバーアカウントの作成は非同期で行われます。そのため、CreateAccountAPIのレスポンスに入っているリクエストIDを指定して、以下のように「メンバー作成が成功したか」のステータスをポーリングする仕組みが必要になります。
createAccountRequestId = createAccountRequest["CreateAccountStatus"]["Id"] while orgs.describe_create_account_status(CreateAccountRequestId=createAccountRequestId)["CreateAccountStatus"]["State"] != 'SUCCEEDED': time.sleep(5)
関連)AWS Organizationsを利用したアカウント作成の自動化 | Amazon Web Services ブログ
AWS Organizationsのまとめ
- AWS Organizationsは、メンバーアカウントを作成、管理する機能
- AWSマネジメントコンソールや、AWS CLI、SDKから操作が可能
- SDKを使って、メンバーアカウント作成の自動化が可能