私たちのチームでは、メインのクラウドプロバイダーとしてAWSを使用しており、現在、プラットフォームでホストされている3つのプロジェクトがあります。
今後数週間でさらに2つのプロジェクトが予定されていますが、まず、現在の組織が少し混乱しているため、プロジェクトを整理します。
私たちは、プロジェクトを次の規則に従って編成したいと考えています。
では、前述のルールに基づいてAWSでプロジェクトを整理することは可能ですか?もしそうなら、これを行う方法を学ぶための良いリソースは何ですか?そうでない場合、どのクラウドプロバイダーが私たちが望む方法でプロジェクトを整理することを許可しますか?
あなたの注意と時間をありがとう。ご返信をお待ちしております。
AWS組織 は、アカウントの階層を管理するための標準的なアプローチです。ただし、組織内の任意のポイントで請求を統合することはできません。グラフではなくツリーです。
それを踏まえて、私がお勧めするのは次のとおりです。
「コードとしてのインフラストラクチャ」ツールを採用して、ユーザーと権限を管理します。
これは、インフラストラクチャを宣言型で定義できるため、実行できる最も重要なことです。 Terraform は、ここではほぼ標準です。
クライアントはそれぞれ、開発、ステージング、本番用の個別のサブアカウントを持つ組織を作成します。
これは、リソースの使用に対して課金されるようにするために必要です。または、すべてのアカウントを自分で管理し、使用料を請求することもできます。ただし、制御していると、より快適に感じる場合があります。
Dev/staging/productionには、アクセスへのハードバリアを提供するため、個別のアカウントが必要です。開発環境でRDSインスタンスをシャットダウンする機能がある場合、本番環境では同じ機能が付与されません(一部の企業は環境を分離するためにVPCに依存していますが、それらに従うIAMポリシーを構築することははるかに多くの作業です)境界)。
開発チームのアカウントを作成します。
ここで開発者を定義します。また、クライアント環境ごとに(少なくとも)1つのグループを定義し、クライアント固有の役割を引き受ける能力を付与します。
クライアントアカウントごとに、特定の操作へのアクセスを許可するロールを作成します。
たとえば、アプリケーションのデプロイに必要なすべてのアクセス権を付与する1つの役割、アプリケーションのアンデプロイに必要なアクセス権を付与する別の役割、および監視のための読み取り専用アクセスを提供する3番目の役割があるとします。これは、Terraformのようなツールを使用することが実際に効果を発揮する場所です。すべてのクライアントおよびそのクライアント内のすべてのアカウントに適用するロールの単一のセットを定義できます。
「開発者」アカウントのユーザーが役割を引き受けることができるように、これらの各役割に信頼ポリシーを含める必要があることに注意してください。
また、各アプリケーションが実行する必要があるロールを定義する必要もあります(たとえば、特定のSQSキューへのアクセス)。
開発者は、クライアント環境にアクセスする役割を引き受けます。
AWSコンソールから、またはaws sts assume-role
を使用してコマンドラインからこれを行うことができます。後者は、開発者自身の資格情報の代わりに使用する一時的なアクセス資格情報を提供します。