チュートリアル: 組織の作成と設定
このチュートリアルでは、組織を作成し、2 つの AWS メンバーアカウントで組織を構成します。組織のメンバーアカウントのいずれかを作成し、お客様の組織に参加する他のアカウントを招待します。次に、許可リストの手法を使用して、アカウント管理者が明示的にリストされたサービスとアクションだけを委任できるように指定します。これにより、管理者は、AWS が導入した新しいサービスが会社内の他のユーザーによって使用される前に検証することができます。このように、AWS が新しいサービスを導入した場合、管理者が適切なポリシーの許可リストに追加するまでそのサービスは禁止されます。また、このチュートリアルでは、拒否リストを使用して、メンバーアカウントのユーザーが AWS CloudTrail が作成する監査ログの構成を変更できないようにする方法を示します。
次の図は、チュートリアルの主なステップを示しています。
このチュートリアルの手順は、AWS の請求書にコストが発生しません。AWS Organizations は無料サービスです。
前提条件
このチュートリアルでは、既存の 2 つの AWS アカウント (このチュートリアルの一部として 3 つ目のアカウントを作成) にアクセスでき、管理者としてそれぞれにサインインできることを前提としています。
このチュートリアルでは、アカウントを次のように参照します。
-
111111111111
- 組織を作成するために使用するアカウント。このアカウントが管理アカウントになります。このアカウントの所有者には、E メールアドレス OrgAccount111@example.com
があります。
-
222222222222
- メンバーアカウントとして組織に参加するように招待されたアカウント。このアカウントの所有者には、E メールアドレス member222@example.com
があります。
-
333333333333
- 組織のメンバーとして作成するアカウント。このアカウントの所有者には、E メールアドレス member333@example.com
があります。
上記の値をテストアカウントに関連付けられた値に置き換えます。このチュートリアルでは、本番稼働用アカウントを使用しないことをお勧めします。
ステップ 1: 組織を作成する
このステップでは、管理者としてアカウント 111111111111 にサインインし、そのアカウントを管理アカウントとして組織を作成し、メンバーアカウントとして参加するように既存カウント 222222222222 を招待します。
- AWS Management Console
-
-
アカウント 111111111111 の管理者として AWS にサインインし、AWS Organizations コンソールを開きます。
-
概要ページで、[Create an organization] (組織を作成する) を選択します。
-
確認ダイアログボックスで、[Create an organization] (組織を作成する) を選択します。
デフォルトでは、組織はすべての機能を有効にして作成されます。また、一括請求機能のみを有効にした組織を作成することもできます。
AWS によって組織が作成され、AWS アカウント ページが表示されます。別のページが表示されている場合は、左側のナビゲーションペインで AWS アカウント を選択します。
これまでに、ご利用のアカウントのメールアドレスが認証されたことがない場合は、管理アカウントに関連付けられたアドレスに、検証用の E メールが AWS によって自動的に送信されます。検証 E メールの受信には時間がかかる場合があります。
-
24 時間以内に E メールアドレスを検証します。詳細については、「E メールアドレスの検証」を参照してください。
これで、メンバーだけのアカウントを持つ組織ができました。これは、組織の管理アカウントです
組織に参加するために既存のアカウントを招待する
現在組織がありますので、アカウントの入力を開始できます。このセクションのステップでは、参加する既存のアカウントを組織のメンバーとして招待します。
- AWS Management Console
-
参加する既存のアカウントを招待するには
-
AWS アカウントページに移動し、[Add an AWS アカウント] (AWS アカウント の追加) を選択します。
-
[Add an AWS アカウント] (AWS アカウント の追加) ページで、[Invite an exisiting AWS アカウント] (既存の AWS アカウント を招待する) を選択します。
-
[Email address or account ID of an AWS アカウント to invite] (招待する AWS アカウント の E メールアドレスまたはアカウント ID) ボックスに、招待するアカウントの所有者の E メールアドレスを member222@example.com
のように入力します。または、AWS アカウント ID 番号が判明している場合は、お客様が代わりに入力できます。
-
[Message to include in the invitation email message] (招待 E メールのメッセージに含めるメッセージ) ボックスに、必要なテキストを入力します。このテキストに含まれているアカウントの所有者に E メールが送信されます。
-
[招待の送信] を選択します。AWS Organizations は、アカウント所有者に招待を送信します。
エラーがある場合、エラーメッセージを展開します。組織のアカウント制限を超過したことを示すエラーが発生した場合、または組織がまだ初期化中であるためアカウントを追加できない場合は、組織を作成してから 1 時間後にもう一度試してください。それでもエラーが解決しない場合は、AWS サポートまでお問い合わせください。
-
このチュートリアルでは、独自の招待を受け入れる必要があります。次のいずれかを実行して、コンソールの [Invitations] ページに移動します。
-
AWS アカウント ページで、[Accept] (許可)、[Confirm] (確認) の順に選択します。
招待の送信が遅れることがあるため、招待を受信するまで待つ必要がある場合があります。
-
メンバーアカウントからサインアウトし、管理アカウントの管理者ユーザーとして再度サインインします。
メンバーアカウントを作成する
このセクションの手順では、自動的に組織のメンバーとなる AWS アカウント を作成します。このチュートリアルでは、このアカウントを 333333333333 とします。
- AWS Management Console
-
メンバーアカウントを作成するには
-
AWS Organizations コンソールの AWS アカウント ページで、[Add AWS アカウント] ( の追加) を選択します。
-
[Add an AWS アカウント] ( の追加) ページで、[Create an AWS アカウント] ( の作成) を選択します。
-
[AWS アカウント name] (AWS アカウント 名) には、MainApp
Account
などのアカウント名を入力します。
-
[Email address of the account's root user] (アカウントのルートユーザーの E メールアドレス) には、アカウントに代わって通信を受信する個人の E メールアドレスを入力します。この値は、グローバルで一意であることが必要です。2 つのアカウントで同じ E メールアドレスを使用することはできません。たとえば、mainapp@example.com
のようなものを使用できます。
-
[IAM role name] の場合は、このフィールドを空白のままにしてデフォルトのロール名 OrganizationAccountAccessRole
を自動的に使用するか、独自の名前を付けることができます。このロールを使用すると、管理アカウントで IAM ユーザーとしてサインインしたときに、新しいメンバーアカウントにアクセスできます。このチュートリアルでは、ブランクのままにして、AWS Organizations にデフォルト名のロールを作成するよう指示します。
-
[Create]AWS アカウント (作成) を選択します。新しいアカウントが AWS アカウント ページに表示されるのを確認するには、しばらく待ってからページを更新する必要があります。
組織のアカウント制限を超過したことを示すエラーが発生した場合、または組織がまだ初期化中であるためアカウントを追加できない場合は、組織を作成してから 1 時間待つか、もう一度試してください。それでもエラーが解決しない場合は、AWS サポートまでお問い合わせください。
ステップ 2: 組織単位を作成する
このセクションのステップでは、組織単位 (OU) を作成し、メンバーアカウントを配置します。完了すると、階層は次の図のようになります。管理アカウントはルートのままになります。1 つのメンバーアカウントは本稼働の OU に移動され、他のメンバーアカウントは本番稼働用の子である MainApp OU に移動されます。
- AWS Management Console
-
OU を作成して設定するには
次の手順では、オブジェクト自体の名前またはオブジェクトの横にあるラジオボタンのいずれかを選択するため、オブジェクトを操作します。
次のステップでは、ラジオボタンをクリックしてメニューを選択し、関連するオブジェクトを処理します。
-
AWS Organizations コンソールで、AWS アカウント ページに移動します。
-
ルートコンテナの横にあるチェックボックス
をオンにします。
-
[Children] (子) タブで [Actions] (アクション) を選択し、[Organizational unit] (組織単位) で [Create new] (新規作成) を選択します。
-
[Create organizational unit in Root] (ルートでの組織単位の作成) ページで、[Organizational unit name] (組織単位名) に Production
と入力し、[Create organizational unit] (組織単位の作成) を選択します。
-
新しいProduction OU の横にあるチェックボックス
をオンにします。
-
[Actions] (アクション) を選択し、[Organizational unit] (組織単位) で [Create new] (新規作成) を選択します。
-
[Create organizational unit in Production] (本番環境での組織単位の作成) ページで、2 番目の OU の名前として MainApp
を入力し、[Create organizational unit] (組織単位の作成) を選択します。
これで、メンバーアカウントをこれらの OU に移動できます。
-
AWS アカウントページに戻り、[Production OU] (運用 OOU) の横にある三角形
をクリックして、その下のツリーを展開します。
これにより、[MainApp] OU が [Production] の子として表示されます。
-
チェックボックス
をオンにし(名前ではない)、[Actions] (アクション) を選択してから、AWS アカウント の下の [Move] (移動) を選択します。
-
[Move AWS アカウント「member-account-name
」] ( の「member-account-name」の移動) ページで、名前ではなくラジオボタン
をクリックしてから、[Move AWS アカウント] ( の移動) を選択します。
-
チェックボックス
をオンにし(名前ではない)、[Actions] (アクション) を選択してから、[AWS アカウント] の下の [Move] (移動) を選択します。
-
[Move AWS アカウント 'member-account-name
'] ( 「member-account-name」の移動) ダイアログボックスで、[Production] の横にある三角形でそのブランチを展開して [MainApp] を公開します。
-
ラジオボタン [
] をクリックしてから (名前ではない)、[AWS アカウント] で [AWS アカウント の移動] を選択します。
ステップ 3: サービスコントロールポリシーを作成する
このセクションのステップでは、3 つのサービスコントロールポリシー (SCP) を作成し、それらを root と OU にアタッチして、組織のアカウントのユーザーの実行範囲を制限します。最初の SCP は、メンバーアカウントのメンバーが、構成する AWS CloudTrail ログの作成または変更を禁止します。管理アカウントは SCP の影響を受けません。したがって、CloudTrail SCP を適用した後、管理アカウントのログを作成する必要があります。
組織のサービスコントロールポリシータイプを有効にする
いずれかのタイプのポリシーをルートまたはルート内の任意の OU にアタッチするには、その組織のポリシータイプを有効にする必要があります。ポリシータイプは、デフォルトでは有効になっていません。このセクションのステップでは、組織のサービスコントロールポリシー (SCP) タイプを有効にする方法を示します。
- AWS Management Console
-
組織の SCP を有効にするには
-
ポリシー に移動し、[Service Control Policies] (サービスコントロールポリシー) を選択します。
-
サービスコントロールポリシー ページで、[Enable service control policies] (サービスコントロールポリシーを有効にする) を選択します。
緑色のバナーが表示され、組織で SCP を作成できるようになりました。
SCP の作成
組織のサービスコントロールポリシーが有効になったので、このチュートリアルに必要な 3 つのポリシーを作成できます。
- AWS Management Console
-
CloudTrail 設定アクションをブロックする最初の SCP を作成するには
-
ポリシー に移動し、[Service Control Policies] (サービスコントロールポリシー) を選択します。
-
サービスコントロールポリシーページで、[Create policy] (ポリシーの作成) を選択します。
サービスコントロールポリシーエディタは、現在、元のバージョンの AWS Organizations コンソールでのみ使用できます。編集が完了すると、コンソールの新しいバージョンに自動的に戻ります。
-
[ポリシー名] に「Block
CloudTrail Configuration Actions
」と入力します。
-
[Policy] (ポリシー) セクションで、左側のサービスのリストで、CloudTrail を選択します。次に、以下のアクションを選択します。[AddTags]、[CreateTrail]、[DeleteTrail]、[RemoveTags]、[StartLogging]、[StopLogging]、[UpdateTrail]。
-
引き続き左側のペインで、[Add resource] (リソースの追加) を選択し、[CloudTrail] および [All Resources] (すべてのリソース) を指定します。[リソースの追加] を選択します。
右側の更新ポリシーステートメントは次のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1234567890123",
"Effect": "Deny",
"Action": [
"cloudtrail:AddTags",
"cloudtrail:CreateTrail",
"cloudtrail:DeleteTrail",
"cloudtrail:RemoveTags",
"cloudtrail:StartLogging",
"cloudtrail:StopLogging",
"cloudtrail:UpdateTrail"
],
"Resource": [
"*"
]
}
]
}
-
[Create policy] (ポリシーを作成) を選択します。
2 番目のポリシーは、Production OU のユーザーとロールが使用できるすべてのサービスとアクションの許可リストを定義します。終了したら、本稼働の OU のユーザーはリストにあるサービスとアクションのみにアクセスすることができます。
- AWS Management Console
-
Production OU の承認されたサービスを許可する第 2 のポリシーを作成するには
-
サービスコントロールポリシーページから、[Create policy] (ポリシーの作成) を選択します。
-
[ポリシー名] に「Allow
List for All Approved Services
」と入力します。
-
カーソルの右ペインの [ポリシー] セクションに合わせ、次のようにポリシーを貼り付けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1111111111111",
"Effect": "Allow",
"Action": [
"ec2:*",
"elasticloadbalancing:*",
"codecommit:*",
"cloudtrail:*",
"codedeploy:*"
],
"Resource": [ "*" ]
}
]
}
-
[Create policy] (ポリシーを作成) を選択します。
最後のポリシーは、MainApp OU での使用がブロックされているサービスの拒否リストを提供します。このチュートリアルでは、MainApp OU にあるすべてのアカウントの Amazon DynamoDB へのアクセスをブロックします。
- AWS Management Console
-
MainApp OU で使用できないサービスへのアクセスを拒否する 3 番目のポリシーを作成するには
-
サービスコントロールポリシーページから、[Create policy] (ポリシーの作成) を選択します。
-
[ポリシー名] に「Deny
List for MainApp Prohibited Services
」と入力します。
-
左側の [Policy] (ポリシー) セクションで、サービスに [Amazon DynamoDB] を選択します。アクションでは、[すべてのアクション] を選択します。
-
引き続き左側のペインで、[Add resource](リソースの追加) を選択し、[DynamoDB] および [All Resources] (すべてのリソース) を指定します。[リソースの追加] を選択します。
右側の更新ポリシーステートメントは次のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [ "dynamodb:*" ],
"Resource": [ "*" ]
}
]
}
-
[ポリシーの作成] を選択して SCP を保存します。
SCP を OU にアタッチする
これで SCP はルートに対して有効になったため、ルートおよび OU にアタッチすることができます。
- AWS Management Console
-
root と OU にポリシーをアタッチするには
-
AWS アカウント ページに移動します。
-
AWS アカウントページで、[Root] (ラジオボタンではなく名前) を選択し、詳細ページに移動します。
-
[Root] (ルート) の詳細ページで [Policies] (ポリシー) を選択してから、[Service Control Policies] (サービスコントロールポリシー) で [Attach] (アタッチ) を選択します
-
[Attach a service control policy] (サービスコントロールポリシーのアタッチ) ページで、SCP の横にある Block
CloudTrail Configuration Actions
というラジオボタンをクリックし、[Attach] (アタッチ) を選択します。このチュートリアルでは、サービスコントロールポリシーをルートにアタッチして、すべてのメンバーアカウントに影響を与え、CloudTrail の設定方法を誰にも変更されないようにします。
[Root] (ルート) の詳細ページの [Policies] (ポリシー) タブで、2 つの SCP (アタッチした SCP とデフォルトの FullAWSAccess
SCP) がルートにアタッチされていることが確認できました。
-
AWS アカウントページに戻り、[Production OU] (ラジオボタンではなく名前) を選択して、詳細ページに移動します。
-
[Production OU] の詳細ページで、[Policies] (ポリシー) タブを選択します。
-
[Service Control Policies] (サービスコントロールポリシー) で [Attach] (アタッチ) を選択します。
-
[Attach a service control policy] (サービスコントロールポリシーのアタッチ) ページで、Allow List for All
Approved Services
の横にあるラジオボタンをクリックしてから [Attach] (アタッチ) を選択します。これにより、Production OUのメンバーアカウントのユーザーまたはロールが、承認されたサービスにアクセスできるようになります。
-
[ポリシー] タブを再度選択して、2 つの SCP が OU にアタッチされていることを確認します。先ほどアタッチした SCPと、デフォルトの FullAWSAccess
SCPです。ただし、FullAWSAccess
SCP はすべてのサービスとアクションを許可する許可リストでもあるため、承認されたサービスのみが許可されるように、今はこの SCP をデタッチする必要があります。
-
Production OU からデフォルトのポリシーを削除するには、[FullAWSAccess] のラジオボタンをクリックし、[Detach] (デタッチ) を選択してから、確認ダイアログボックスで [Detach policy] (ポリシーのデタッチ) を選択します。
このデフォルトポリシーを削除すると、Production OU のすべてのメンバーアカウントは、直前のステップでアタッチした、許可リスト SCP にないすべてのアクションとサービスにすぐにアクセスできなくなります。Allow List for All Approved Services SCP に含まれていないアクションを使用するリクエストはすべて拒否されます。これは、アカウントの管理者が、メンバーアカウントのいずれかのユーザーに IAM アクセス許可ポリシーをアタッチして別のサービスへのアクセスを許可する場合にも当てはまります。
-
Deny List for MainApp
Prohibited services
という名前の SCP をアタッチして、MainApp OU 内のアカウントの誰も制限付きサービスを使用できないように制限できるようになりました。
これを行うには、AWS アカウントページに移動し、三角形のアイコンを選択して [Production OU] のブランチを展開してから、[MainApp] OU (ラジオボタンではなく名前) を選択して、その内容に移動します。
-
MainApp の詳細ページで、[Policies] (ポリシー) タブを選択します。
-
[Service Control Policies] (サービスコントロールポリシー) で [Attach] (アタッチ) を選択し、使用可能なポリシーのリストで、[Deny List for MainApp Prohibited Services] (MainApp で禁止されたサービスの拒否リスト) の横にあるラジオボタンをクリックしてから、[Attach policy] (ポリシーのアタッチ) を選択します。
ステップ 4: 組織のポリシーをテストする
これで、メンバーアカウントのいずれかのユーザーでサインインし、さまざまな AWS アクションを実行できるようになりました。
-
管理アカウントでユーザーとしてサインインすると、IAM アクセス許可ポリシーで許可されているオペレーションを実行することができます。SCP は、アカウントがどのルートまたは OU に属していても、管理アカウントのユーザーまたはロールに影響を与えません。
-
アカウント 222222222222 のルートユーザーまたは IAM ユーザーとしてサインインすると、許可リストで許可されているオペレーションを実行できます。AWS Organizations は、許可リストに含まれていないサービスでアクションを実行しようとする試みを拒否します。また、AWS Organizations は、CloudTrail 設定アクションを実行しようとする試みを拒否します。
-
アカウント 333333333333 でユーザーとしてサインインすると、許可リストで許可され、拒否リストでブロックされていないアクションはすべて実行できます。AWS Organizations は、許可リストポリシーにないアクションと拒否リストポリシーにあるアクションを実行しようとするすべての試みを拒否します。また、AWS Organizations は、CloudTrail 設定アクションを実行しようとする試みを拒否します。