【AWS認定(SAP-C02)ノート】 マルチアカウント
はじめに
本記事は、AWS Certified Solutions Architect - Professional の第 1 分野: 複雑な組織に対応するソリューションの設計
のタスクステートメント 4: マルチアカウント AWS 環境を設計する
に関連するAWSサービスの特徴やポイントのまとめです
対象知識
- AWS Organizations と AWS Control Tower
- マルチアカウントイベント通知
- 環境間の AWS リソース共有
クロスアカウントアクセス
- IAMユーザーを特定のAWSアカウントで一元管理
- 組織内の各AWSアカウントにはIAMロールを作成
- IAMユーザーはアカウントIDとIAMロールを指定してスイッチロールする
- AWS STSの AssumeRole アクションによって、IAMロールから一時的認証情報(アクセスきーID、シークレットアクセスきー、セッショントークン)を取得して使用
- プリンズバルにIAMユーザーやAWSアカウントを限定できるARNを指定
- IAMコンソールから「スイッチロール」メニューで実行可能
- AWS CLIやSDKを使った引き受けも可能
カスタムIDブローカーアプリケーション
オンプレミスのアプリケーションからも一時的な認証情報(STS)を使用してAWSのサービスをアプリケーションから使用したり、コンソールへのリダイレクトURLを生成できる
サードパーティ製品へのアクセス許可
- サードパーティ製品にIAMロールを伝えて、サードパーティ製品のAWSアカウントに信頼関係で引き受けを許可
- 許可したサードパーティ製品に対して、特定の操作だけを許可
- この場合、「混乱した代理問題」の課題が発生
- IAMロールのARN登録ごとに一意の「外部ID」を発行して解決
- IAMロールの信頼ポリシーの Condition で sts:ExternalId として追加される
- これにより、ユーザーBがユーザーAのIAMロールのARNを登録しても、別の外部IDが設定され、IAMロールはsts:AssumeRole を拒否する
AWS Directory Service
サーバーの認証に、Active Directoryを使用する方法
AD Connector
オンプレミスで起動しているActive Directory の認証をそのまま使えるサービス
クラウド内の情報をキャッシュせずにディレクトリリクエストをオンプレミスのMicrosoft Active Directory にリダイレクトするために使用できるディレクトリゲートウェイ
- オンプレミスのActive Directoryに連携するので、ネットワークが繋がっている必要がある
- AWSマネージドディレクトリと連携するサービスを、現在のActive Directoryのユーザー情報で利用可能
- EC2インスタンスのドメイン参加を、起動時にシームレスに行える
Simple AD
AWSへActive Directoryを移行する場合に選択するVPCで起動するマネージドなディレクトリサービス
- 特徴
- Samba 4 Active Directory Compatible Server
- 最大5000ユーザーまで
AWS Managed Microsoft AD
- 特徴
- Microsoft Active Directory のマネージドサービス
- 5000を超えるユーザー
- 他ドメインとの信頼関係
- MFA(多要素認証)
IAMアイデンティティセンター
- 複数のAWSアカウントと外部アプリケーションへシングルサインオン(SSO)できる
- Organizationsの管理アカウントで有効にする必要がある
認証
アイデンティティセンターディレクトリ(デフォルト)
- 認証情報(ユーザー名、パスワード)をIAMアイデンティティセンターで管理
- 使用したいディレクトリがない場合に選択
Active Directory
- AWS Managed Microsoft AD または AD Connector を選択
- オンプレミスとはVPN接続かDirect Connectで接続
外部IDプロバイダー
- 外部IDプロバイダー(OneLoginなど)を使用
AWSアカウントへの許可セット
許可セットを作成して、AWSアカウントにSSOした際の権限を設定できる
外部アプリケーションの追加
カスタムSAML 2.0 アプリケーションとして、外部のアプリケーションを追加
IAMアイデンティティセンターを使用しないケース
- 既にAD FS(Active Directory Federation Service)やOKta、OneLoginのポータルサイトも使用している場合
- 各AWSアカウントのIAMで個別にIDプロバイダーとIAMロールを作成する必要がある
AWS Organizations
アカウント作成の自動化
- 既存アカウントを組織のメンバーアカウントとして招待
- 新規メンバーアカウントもコンソール、CLI、SDKから追加可能
- 必要に応じて、Organizations API を使ってアカウントの作成を自動化できる
SCP(サービスコントロールポリシー)
- 組織でOU(組織単位)やアカウントに設定するポリシー
- 予防コントロールとして、権限を制限
許可リスト戦略(OU Sandbox)
- 上位レベルで許可されているものを下位レベルで絞り込むようにフィルタリング
- Effect:Allowとして指定
- Condition、NotActionの使用、Resourceの指定ができない
例)以下の例では、アカウントユーザーはAmazon EC2およびAmazon CloudWatchのオペレーションを実行できるが、他のサービスを実行することはできない
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*",
"cloudwatch:*"
],
"Resource": "*"
}
]
}
拒否リスト戦略(OU Security)
- 下位レベルで追加で明示的に拒否するアクションを指定
- Condition、NotActionの使用、Resourceの指定ができる
例)以下の例では、影響を受けるアカウントのユーザーが Amazon DynamoDB サービスのいかなるアクションも実行しないようにします
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyDynamoDB",
"Effect": "Deny",
"Action": "dynamodb:*",
"Resource": "*"
}
]
}
一括請求(コンソリデーティッドビリング)
Organizationsのメンバーアカウントは一括請求の対象
- 利点
- 1つの請求書、統合請求データ
-
ボリュームディスカウント
- 複数アカウントの合計容量による従量制の割引
- 無料利用枠も組織内の全てのアカウントの合計量が適用される
-
リザーブドインスタンス(RI)、Savings Plansの共有
- 合計使用量にRI、Savings Plansを適用できる
- 共有はアカウントごとに無効化できる
AWS CloudFormation StackSets
- 複数リージョン、複数アカウントにスタックを作成して、変更・削除・管理できる機能
- Organizationsと統合し、組織、OU、アカウントを指定してスタックを作成・変更・削除できる
AWS CloudTrail
- マスターアカウントで組織内の全てのアカウントについてCloudTrailを有効化できる
- 組織のCloudTrailを1つのS3バケットにまとめる
- 書き出されるS3オブジェクトのプレフィックスには組織IDが含まれる
AWS Service Catalog
- IAMユーザーにCloudformationスタックで作成されたリソースへの直接的なアクセス権限を与えずに、事前に用意されたテンプレートからスタックを作成できる
- IAMユーザーに必要なサービスリソースをセルフで作成できるようにしながら、余計な操作を制限できる
- 管理者はテンプレートを製品としてService Catalogに登録し、IAMユーザーに許可する製品のリストをポートフォリオとして設定する
- ポートフォリオはOrganizations組織でOUを指定して共有できる
- リソースはポートフォリオが作成されたアカウントで起動、一元管理ができる
AWS Resource Access Manager(RAM)
アカウント間でAWSリソースを簡単に共有するためのサービス
- いくつかのリソースをOrganizationsと連携して組織、OUとの共有できる
- 転送ルール(Transit Gateway、サブネット、Route53 resolver)を複数のアカウントで共有
- License Managerではソフトウェアライセンスを複数アカウントにまたがって管理
- EC2で共有できるもの
- キャパシティ予約、専用ホスト(Dedicated Hosts)、プレイスメントグループ
- EC2 Image Builderのビルドコンポーネント、テストコンポーネント、それらを含むレシピ
共有プレフィックスリストの操作
AWS RAMにより、プレフィックスリストの所有者は、プレフィックスリストを次の対象と共有できる
- AWS Organizationsの組織内または組織外の特定のAWSアカウント
- AWS Organizationsの組織内の組織単位(OU)
- AWS Organizationsの組織全体
プレフィックスリストの共有先であるコンシューマーは、プレフィックスリストとそのエントリを表示でき、そのプレフィックスリストをAWSリソース内で参照できる。
AWS Control Tower
複数アカウントのベストプラクティスであるランディングゾーンを自動構築する
ログアカウントと監査アカウント
- Security OUにログと監査のアカウントを作成
- ログアカウント:CloudTrailとConfigのログが集約され、Athenaなどを使用してログを分析
- 監査アカウント
- SNSトピックに任意のサブスクライバーを設定して、通知や自動運用の開始が可能
- Configアグリゲーターにより組織内のリソース設定が確認できる
アカウントの追加、招待
Service Controlポートフォリオで作成されたAccount Factoryで新規作成、追加でけいる
アカウント認証
- Organizationsと連携するIAMアイデンティティセンター
- 各アカウントへのSSOが設定できる
- ランディングゾーン作成時に有効化
コントロール(ガードレール)
- 予防:SCPにより、操作が制限されるコントロール
- 検出:Configルールによって非準拠リソースを抽出できる
- プロアクティブ:CFnで作成されるリソースが準拠していない場合、作成しない
ダッシュボード
Control Towerランディングゾーンは、ダッシュボードで確認、確認が可能
Discussion