コンパートメントを使用した多層開発環境とリージョン間開発環境の分離
コンパートメントを利用して、Oracle Cloud Infrastructureでエンタープライズ・ソリューションを作成するために使用できるセキュアな多層およびリージョン間の開発およびテスト環境用のテンプレートを作成します。
ミッションクリティカルなプロジェクトを実装するため、組織は通常、プロジェクトを本番環境にリリースする前に開発およびテスト用の個別の環境を維持します。環境では、Oracle Cloud PaaSおよびOracle Cloud Infrastructureサービスを単一のエンティティとして定義および管理できます。効率的に管理するために、環境全体で適切なリソース、構造および設計を行うことが重要です。
コンパートメントは、セキュリティの分離とアクセス制御のためのOracle Cloud Infrastructure (OCI)の強力な機能です。ポリシーの適用を通じて、リソース管理および委任管理のために組織によって定義されたパラメータに従って適切なアクセス・レベルを提供します。
アーキテクチャ
このリファレンス・アーキテクチャは、コンパートメントを使用してOracle Cloud Infrastructureで様々な環境を設計および構成する方法、およびソフトウェア開発とリリース・ライフサイクルをサポートするリソースをプロビジョニングする方法を示しています。このアーキテクチャでは、多層Webアプリケーションをリファレンス・ポイントとして使用し、実装を示すために企業内の様々な組織にリソースを割り当てます。
次のダイアグラムにこのアーキテクチャを示します。
oci-dev-env-architecture:oracle.zip
このアーキテクチャには次のコンポーネントがあります。
- テナント
テナンシは、Oracle Cloud Infrastructureへのサインアップ時にOracleがOracle Cloud内で設定するセキュアで分離されたパーティションです。テナンシ内のOracle Cloudでリソースを作成、編成および管理できます。テナンシは、会社または組織と同義です。通常、会社は単一のテナンシを持ち、そのテナンシ内の組織構造を反映します。通常、単一のテナンシは単一のサブスクリプションに関連付けられ、単一のサブスクリプションには1つのテナンシのみが含まれます。
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含むローカライズされた地理的領域です。リージョンは他のリージョンから独立しており、広大な距離で(複数の国または複数の大陸にまたがる)リージョンを分離できます。
- コンパートメント
コンパートメントは、Oracle Cloud Infrastructureテナンシ内のリージョン間論理パーティションです。コンパートメントを使用して、Oracle Cloudでリソースを編成、リソースへのアクセスを制御および使用割当てを設定します。特定のコンパートメント内のリソースへのアクセスを制御するには、誰がリソースにアクセスできるか、どのアクションを実行できるかを指定するポリシーを定義します。
- ポリシー
Oracle Cloud Infrastructure Identity and Access Managementポリシーでは、誰がどのリソースにどのようにアクセスできるかを指定します。アクセス権はグループ・レベルおよびコンパートメント・レベルで付与されます。つまり、特定のコンパートメント内またはテナンシ内での特定のアクセスのタイプをグループに付与するポリシーを記述できます。
- ロード・バランサ
Oracle Cloud Infrastructure Load Balancingサービスは、単一のエントリ・ポイントからバックエンドの複数のサーバーへの自動トラフィック分散を提供します。
- コンピュート
Oracle Cloud Infrastructure Computeサービスを使用すると、クラウド内のコンピュート・ホストをプロビジョニングおよび管理できます。CPU、メモリー、ネットワーク帯域幅およびストレージのリソース要件を満たすシェイプを使用してコンピュート・インスタンスを起動できます。コンピュート・インスタンスを作成したら、インスタンスに安全にアクセスして再起動し、ボリュームをアタッチおよびデタッチして、不要になったら終了できます。
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processingは、トランザクション処理ワークロード向けに最適化された、自動運転、自己保護および自己修復が可能なデータベース・サービスです。ハードウェアの構成や管理、ソフトウェアのインストールを行う必要はありません。Oracle Cloud Infrastructureでは、データベースの作成、およびデータベースのバックアップ、パッチ適用、アップグレードおよびチューニングが処理されます。
レコメンデーション
開始点として次の推奨事項を使用します。実際の要件は異なる場合があります。
- VCN
VCNを作成するときには、必要なCIDRブロックの数を決定し、VCN内のサブネットにアタッチする予定のリソースの数に基づいて各ブロックのサイズを決定します。標準プライベートIPアドレス空間内のCIDRブロックを使用します。
プライベート接続を設定する他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。
VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。
サブネットを設計するときには、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを同じサブネットに接続し、セキュリティ境界として機能できます。
リージョナル・サブネットを使用します。
- コンパートメント
デフォルトでは、Oracle Cloudテナンシには、テナンシ自体にちなんで名前が付けられたデフォルトのルート・コンパートメントがあります。テナンシ管理者(デフォルトのルート・コンパートメント管理者)は、デフォルトの管理者グループのメンバーであるすべてのユーザーです。
このアーキテクチャでは、ルート・コンパートメント内の2つの異なる組織に対して、HRとSalesという2つのトップレベル・コンパートメントを作成します。これらのコンパートメントは、HR-AdminsおよびSales-Adminsの2つのグループによって管理されます。HRの最上位レベル・コンパートメントの下に、HR-Prod、HR-Dev、HR-StagingおよびHR-Testのサブコンパートメントを作成します。これらのコンパートメントは、それぞれ「HR-Prod-Admins」、「HR-Dev-Admins」、「HR-Staging-Admins」および「HR-Test-Admins」グループによって管理されます。「Sales」トップレベル・コンパートメントで、「Sales-Prod」、「Sales-Dev」、「Sales-Staging」および「Sales-Test」サブコンパートメントを作成します。これらのコンパートメントは、それぞれSales-Prod-Admins、Sales-Dev-Admins、Sales-Staging-AdminsおよびSales-Test-Adminsグループによって管理されます。
- ポリシー
コンパートメントのアクセス制御はポリシーによって管理されます。ポリシーは、テナンシまたはコンパートメント内の選択したリソース(またはリソース・ファミリ)のアクションにサブジェクト(常にユーザーのグループ)を関連付けるステートメントで構成されます。アクセス制御をさらに絞り込む条件を追加することで、ポリシー・ステートメントをさらに修飾できます。
この実装では、トップレベル・コンパートメントおよびサブコンパートメントのポリシーおよびコンパートメントを介して、Oracle Cloud Infrastructure Computeリソースの管理を委任します。目標は、各コンパートメントを独立して相互に完全に分離して機能させることです。
考慮事項
このリファレンス・アーキテクチャをデプロイする場合は、次の点を考慮してください。
- 拡張性
Oracle Cloud Infrastructureでは、最大6レベルのコンパートメント階層がサポートされます。コンパートメントの管理者は、ネストされたコンパートメントに対する完全な権限を持ちます。この実装では、3つのレベルを使用します。
Oracle Cloud Infrastructure Compute、ロード・バランシング・サービス、Autonomous Transaction ProcessingなどのOracle Cloud Infrastructureリソースは、リージョン全体および環境全体の各コンパートメントにプロビジョニングされます。この例では、ソフトウェア開発およびリリースのライフサイクルの参照ポイントとして、単純なWebアプリケーションにリソースが割り当てられます。
Oracle Cloud Infrastructure Computeは、自動スケーリング機能を提供します。これは、需要が多い期間にエンド・ユーザーに一貫したパフォーマンスを提供し、需要が少ない期間にコストを削減するのに役立ちます。Oracle Autonomous Transaction Processingの自動スケーリング機能を使用することもできます。自動スケーリングが有効な場合、アプリケーションが手動操作なしで、必要に応じてより多くのCPUおよびIOリソースを自動的に使用します。ロード・バランサは、シェイプの帯域幅を動的に変更するためのサポートを提供します。
- 可用性
一般に、近くのリソースの使用は遠いリソースの使用よりも高速であるため、アプリケーションは、それがもっとも頻繁に使用されるリージョンにデプロイします。同じリージョン内の可用性ドメインは、低レイテンシ、高帯域幅ネットワークを使用して相互に接続します。このネットワークはインターネットおよびオンプレミス機器への高可用性接続を提供するため、高可用性とディザスタ・リカバリの両方のためにレプリケートされたシステムを複数の可用性ドメインに構築できます。
Oracle Autonomous Transaction Processingは、本番データベースのリアルタイムのリモート・コピーを維持し、Oracle Data Guardを使用してプライマリ・データベースからリモート・コピーに自動的に切り替えることで、サイトのダウンタイムを排除します。
- 管理性コンパートメントはリソース管理を分離するため、コンパートメント間でリソースを共有できます。たとえば、HR-DevからSales-Devにコンピュート・インスタンスを共有するには、次の2つのオプションがあります。
- HR-Dev-Adminsグループのカスタム・イメージを作成し、イメージをOracle Cloud Infrastructure Object Storageにエクスポートして、Sales-Dev-Adminsグループで使用できるようにします。
- HR-Devのインスタンス・ブート・ボリュームをSales-Devコンパートメントにエクスポートすることもできます。
管理者は、使用可能なCIDR範囲を様々な組織領域にまたがってパーティション化する方法を事前に計画します。VCNに重複するCIDR範囲がないことを確認してください。この計画では、異なるコンパートメント間の任意の2つのVCN間の不注意なピアリングを防止します。
最後に、Terraformを使用してインフラとリソース割当てを自動化して、アーキテクチャを管理します。
-
セキュリティ
異なるコンパートメント内のリソースが通信できるように、仮想ファイアウォールとして機能するセキュリティ・リストを構成します。たとえば、HRコンパートメント内のデータベース・インスタンスは、適切なセキュリティ・リストが適切に構成されていれば、Salesコンパートメント内のデータベース・インスタンスに接続できます。
データベースをプライベート・サブネットにアタッチすることで、Oracle Autonomous Transaction Processingデータベースのプライベート・エンドポイントを公開します。
サブネットを設計するときは、トラフィック・フローおよびセキュリティ要件を検討してください。特定の層またはロール内のすべてのリソースを同じサブネットに接続し、セキュリティ境界として機能できます。必要なアクセスのタイプに応じて、VCNにルート表およびゲートウェイ(仮想ルーター)を追加してトラフィックを管理します。たとえば、パブリック・インターネット、プライベート・インターネット、オンプレミス・ネットワーク、別のOracle service、またはテナンシ内の別のVCNネットワークを介して接続する必要がある場合があります。
Oracle Cloud Infrastructure Compute Web Application Firewall (WAF)を使用して、パブリック・インターネットからの悪意のあるトラフィックからアプリケーションを保護することを検討してください。このアーキテクチャは、特定のコンパートメント内のどのOracle Cloud Infrastructure Computeリソースにアクセスできるユーザーを制限するポリシーに依存します。
デプロイ
エンタープライズ・ソリューション開発用の多層コンパートメント環境を作成するためのTerraformコードは、GitHubにあります。
- GitHubにアクセスします。
- リポジトリをクローニングするか、ローカル・コンピュータにダウンロードします。
READMEドキュメントの手順に従います。
