コンパートメントの管理
このトピックでは、コンパートメントの操作の基本について説明します。
必須IAMポリシー
管理者グループにいる場合、コンパートメントの管理に必要なアクセス権を持っています。
コンパートメント管理に関連する追加のポリシーについては、コンパートメント管理者によるコンパートメントの管理を参照してください。
ポリシーを初めて使用する場合は、ポリシーの開始と共通ポリシーを参照してください。コンパートメントまたは他のIAMコンポーネントのポリシーの書込みの詳細は、アイデンティティ・ドメインのないIAMの詳細を参照してください。
リソースのタグ付け
リソースにタグを適用すると、ビジネス・ニーズに応じてそれらを整理しやすくなります。リソースの作成時にタグを適用するか、後でリソースを必要なタグで更新します。タグ適用についての一般情報は、リソース・タグを参照してください。
コンパートメントの作業
Oracle Cloud Infrastructureの操作を最初に開始する場合、コンパートメントを使用してクラウドのリソースを編成および分離する方法について慎重に検討する必要があります。コンパートメントは、そのプロセスの基本となります。ほとんどのリソースは、コンパートメント間で移動できます。ただし、何かを実装する前に、組織のコンパートメント設計を事前に考えることが重要です。詳細は、テナンシを設定するためのベスト・プラクティスについて学習を参照してください。
コンソールは現在のリージョン内のコンパートメント別にリソースを表示するよう設計されています。コンソールでリソースを操作する場合、ページ上のリストから作業するコンパートメントを選択する必要があります。このリストは、アクセス権限のあるテナンシ内のコンパートメントのみが表示されるようにフィルタされています。管理者である場合、すべてのコンパートメントを表示し、すべてのコンパートメントのリソースを操作する権限を持ちますが、アクセス権が制限されているユーザーはそうではない可能性があります。
コンパートメントはテナンシ全体で複数のリージョンにわたります。コンパートメントを作成すると、テナンシをサブスクライブしているすべてのリージョンで使用可能になります。テナンシ・エクスプローラを使用して、特定のコンパートメントのリソースのクロスリージョン・ビューを取得できます。コンパートメント内のすべてのリソースの表示を参照してください。
セキュリティを強化するために、コンパートメントをセキュリティ・ゾーンに関連付けることができます。詳細は、セキュリティ・ゾーンを参照してください。
コンパートメントの作成
コンパートメントのアクセス制御
コンパートメントの作成後、少なくとも1つのポリシーを記述する必要があります。そうしないと、アクセスできません(テナンシ・レベルで権限が設定された管理者またはユーザーを除く)。別のコンパートメント内にコンパートメントを作成すると、コンパートメントは階層の上位コンパートメントからアクセス権限を継承します。詳細は、ポリシー継承を参照してください。
アクセス・ポリシーを作成する場合、アタッチ先のコンパートメントを指定する必要があります。これにより、ポリシーを後で変更または削除できるユーザーが制御されます。コンパートメント階層がどのように設計されているかに応じて、テナンシ、親、または特定のコンパートメント自体にアタッチできます。詳細は、ポリシー・アタッチメントを参照してください。
コンパートメントへのリソースの配置
新規リソースをコンパートメントに配置するには、リソースの作成時にコンパートメントを指定するだけです(コンパートメントは、リソースを作成するために必要な情報の1つです)。コンソールで作業している場合は、リソースを作成するコンパートメントを表示していることを確認します。ほとんどのIAMリソースはテナンシ(これには、ユーザー、グループ、コンパートメントおよびテナンシにアタッチされたポリシーが含まれます)に存在し、特定のコンパートメントで作成したり、管理することはできないことに注意してください。
別のコンパートメントへのリソースの移動
ほとんどのリソースは、作成後に移動できます。あるコンパートメントから別のコンパートメントに移動できないリソースがいくつかあります。また、特定のリソースは、安全性が低下する可能性があるため、セキュリティ・ゾーンから同じセキュリティ・ゾーン内にないコンパートメントに移動することはできません。セキュリティ・ゾーンのリソースに関する制限の詳細は、リソース移動の制限を参照してください。
リソースの依存関係がアタッチされているリソース、およびアタッチされていないリソースがあります。アタッチされた依存関係がすべて、親リソースの移動時に同じように動作するわけではありません。
一部のリソースでは、アタッチされた依存関係が親リソースとともに新規コンパートメントに移動します。親リソースはすぐに移動しますが、場合によってはアタッチされた依存関係が非同期に移動し、移動が完了するまで新規コンパートメントに表示されないことがあります。
他のリソースの場合、アタッチされたリソースの依存関係は新規コンパートメントに移動しません。これらのアタッチされたリソースは個別に移動できます。
リソースを新規コンパートメントに移動すると、新規コンパートメントを制御するポリシーがただちに適用され、リソースへのアクセスに影響します。コンパートメント組織の構造に応じて、測定、請求およびアラームも影響を受ける可能性があります。
各リソースとそのアタッチメントの動作について理解するために、個々のリソースのサービス・ドキュメントを参照してください。
コンパートメントでのリソースの表示
単一のAPIコールを使用してコンパートメント内のすべてのリソースのリストを取得することはできません。かわりに、コンパートメント内の特定のタイプのすべてのリソース(たとえば、すべてのインスタンス、すべてのブロック・ストレージ・ボリュームなど)をリストできます。
コンソールでは、テナンシ・エクスプローラを使用して、リージョン全体にわたるコンパートメントのリソースのリストを取得できます。ただし、いくつか制限があります。詳細は、コンパートメント内のすべてのリソースの表示を参照してください。
リソース・マネージャでは、リソース検出を使用して、デプロイされたリソースをTerraform構成ファイルおよび状態ファイルとして取得できます。作成されたスタックは、ITインフラストラクチャを「Infrastructure as Code」としてプログラムで管理、バージョニングおよび永続化するために使用できるTerraform構成を提供します。
コンパートメントから作成されたスタックは、コンパートメント全体でサポートされているリソースのすべてを適切なスコープで表します。テナンシのルート・コンパートメントを選択した場合、スコープはユーザーやグループなどのテナンシ・レベルになります。非ルート・コンパートメントを選択した場合、スコープはコンピュート・インスタンスなどのコンパートメント・レベルになります。
スタックの作成は、単一のコンパートメントからのみサポートされます。ネストされたコンパートメントからスタックを作成することはできません。
手順については、既存のコンパートメントからのスタックの作成を参照してください。
コンパートメントの削除
コンパートメントを削除するには、すべてのリソースが空である必要があります。コンパートメントの削除を開始する前に、そのすべてのリソースが、コンパートメントにアタッチされたポリシーを含めて移動、削除または終了していることを確認してください。
削除アクションは非同期のため、作業リクエストを開始します。作業リクエストが実行中に、コンパートメントの状態が「削除中」に変更されます。通常、作業リクエストが完了するのに数分かかります。「削除中」状態の場合、コンパートメント・ピッカーに表示されません。作業リクエストが失敗した場合、コンパートメントは削除されず、「アクティブ」状態に戻ります。
コンパートメントが削除されると、その状態は「削除済」に更新され、名前にランダムな文字列が追加されます。たとえば、CompartmentAがCompartmentA.qR5hP2BDになることがあります。コンパートメントの名前を変更すると、元の名前を別のコンパートメント用に再利用できます。Oracleでは、削除されたコンパートメントが90日間「コンパートメント」ページに表示されます。削除されたコンパートメントは、コンパートメント・ピッカーから削除されます。削除されたコンパートメントを参照するポリシー・ステートメントがある場合、ポリシー・ステートメント内の名前が新しい名前に更新されます。
コンパートメントの削除に失敗した場合は、すべてのリソースを削除していることを確認してください。
-
ほとんどのリソースでは、テナンシ・エクスプローラを使用してリソースを見つけることができます。サポートされるリソースのリストは、テナンシ・エクスプローラでサポートされているリソースを参照してください。
コンパートメント内のリソースを表示するにはナビゲーション・メニューを開き、「ガバナンスと管理」をクリックします。「テナンシ管理」で、「テナンシ・エクスプローラ」をクリックします。
ルート・コンパートメントが表示された状態で、テナンシ・エクスプローラが開きます。コンソールの左側にあるコンパートメント・ピッカーから、探索するコンパートメントを選択します。コンパートメントを選択すると、表示する権限のあるリソースが表示されます。表示しているコンパートメントの名前および説明がpage.Toの上部に表示され、選択したコンパートメントのサブコンパートメント内のすべてのリソースもリストされます。「サブコンパートメントのリソースの表示」を選択します。すべてのサブコンパートメント内のリソースを表示するときに、結果リストの「コンパートメント」列を使用して、リソースが存在するコンパートメント階層を表示すると便利です。 -
コンパートメントにポリシーがないことを確認します(ポリシーは検索結果に含まれません)。
コンパートメント内のポリシーを検索するには- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
- 左側のコンパートメント・リストから、削除するコンパートメントを選択します。
コンパートメントにアタッチされているポリシーが表示されます。
- コンパートメントにリソースが見つからない場合は、管理者に確認してください。すべてのリソースの表示権限がない可能性があります。
削除されたコンパートメントがコンパートメントのサービス制限に対して継続的にカウントされる原因となる既知の問題があります。削除されたコンパートメントがサービス制限に対して継続的にカウントされるを参照してください。
コンパートメントのリカバリ
コンパートメントをリカバリするには、まず「コンパートメント」ページのリストから選択する必要があります。削除されたコンパートメントを表示するために、状態フィルタを使用する必要がある場合があります。削除されたコンパートメントは、元のコンパートメント名にランダムな文字列を追加して名前変更されていることに注意してください。たとえば、CompartmentAはCompartmentA.qR5hP2BDのようになります。Oracleでは、削除されたコンパートメントが90日間「コンパートメント」ページに表示されます。
削除されたコンパートメントをリカバリしても、その名前は変わりません。たとえば、CompartmentA.qR5hP2BDという名前の削除済コンパートメントをリカバリしても、名前は変わりません。ポリシー・ステートメントは削除済コンパートメントの新しい名前を使用するように更新されるため、削除済コンパートメントを参照していたポリシー・ステートメントは、リカバリされたコンパートメントを参照するようになります。
コンパートメントのタグのデフォルトの追加
タグのデフォルトを使用すると、現在のコンパートメントで、作成時にすべてのリソースに自動的に適用されるタグを指定できます。詳細は、タグのデフォルトの管理を参照してください。
異なる親コンパートメントへのコンパートメントの移動
同じテナンシ内の異なる親コンパートメントにコンパートメントを移動できます。コンパートメントを移動すると、そのすべての内容(サブコンパートメントおよびリソース)も一緒に移動されます。コンパートメントを移動すると内容も含まれます。これらについては、後続の各項で説明します。コンパートメントを移動する前にこれらの点に注意してください。
必須IAMポリシー
コンパートメントを移動するには、現在のコンパートメントおよび宛先コンパートメントの最下位の共有親コンパートメントに対するmanage all-resources
権限を持つグループに属している必要があります。
コンパートメントの移動に関する制限事項
- ソースまたは宛先がセキュリティ・ゾーンの一部である場合は、コンパートメントを移動できません。セキュリティ・ゾーン内でコンパートメントを管理するには、セキュリティ・ゾーン・コンソールを使用する必要があります。
-
移動対象のコンパートメントと同じ名前のコンパートメントにコンパートメントを移動することはできません。
たとえば、コンパートメントAとコンパートメントBの両方がルート・コンパートメント下にあるとします。コンパートメントAはサブコンパートメントで、コンパートメントBとも呼ばれます。コンパートメントBを親コンパートメントBに移動することはできません。
- 同じ親の2つのコンパートメントに同じ名前を付けることはできません。したがって、同じ名前のコンパートメントがすでに存在する宛先コンパートメントにコンパートメントを移動することはできません。
コンパートメント移動時のポリシーの理解
コンパートメントを新しい親コンパートメントに移動すると、新しい親のアクセス・ポリシーが有効になり、前の親のポリシーは適用されなくなります。コンパートメントを移動する前に、次のことを確認してください。
- 現在の位置にあるコンパートメントへのアクセスを制御するポリシーを認識しています。
- コンパートメントを移動すると有効になる新しい親コンパートメント内のポリシーを認識しています。
階層を指定するポリシーとともにネストされたコンパートメントを移動する場合によっては、一貫性を確保するためにポリシーが自動的に更新されます。
ポリシーの例
現在のコンパートメントでの権限を持つグループのアクセス権の消失。宛先コンパートメントでの権限を持つグループのアクセス権の取得
次の図は、A:Bの子であるコンパートメントCを階層A:Dに移動するコンパートメント階層を示しています。
テナンシには、コンパートメントBおよびDに対して次のポリシーが定義されています。
Policy1: Allow group G1 to manage instance-family in compartment A:B
Policy2: Allow group G2 to manage instance-family in compartment A:D
コンパートメントCがBからDに移動された場合の影響:
グループG1は、コンパートメントC内のinstance-familiesを管理できなくなります。
グループG2は、コンパートメントCでinstance-familiesを管理できるようになります。
コンパートメントの移動時に権限が失われるグループだけでなく、権限を取得するグループも認識していることを確認します。
ポリシーの自動更新
コンパートメントを移動すると、一部のポリシーが自動的に更新されます。移動対象のコンパートメントまでコンパートメント階層を指定するポリシーは、現在とターゲットの親の共有祖先にポリシーがアタッチされると自動的に更新されます。次に例を示します。
例1:ポリシーが自動的に更新される
この例では、コンパートメントAを「Operations:Test」から「Operations:Dev」に移動します。コンパートメントAを管理するポリシーは、共有の親「Operations」にアタッチされます。コンパートメントが移動されると、新規コンパートメントの場所を指定するために、IAMサービスによってポリシー・ステートメントが自動的に更新されます。
ポリシー
Allow group G1 to manage buckets in compartment Test:A
更新
Allow group G1 to manage buckets in compartment Dev:A
グループG1がそのロケーションのコンパートメントAに引き続きアクセスできるようにするために、手動操作は不要です。
例2:ポリシーが更新されていない
この例では、コンパートメントAを「Operations:Test」から「Operations:Dev」に移動します。ただし、コンパートメントAを管理するポリシーは、テスト・コンパートメントに直接アタッチされます。コンパートメントが移動されても、ポリシーは自動的に更新されません。コンパートメントAを指定するポリシーは有効ではなくなります。手動で削除する必要があります。グループG1は、「Dev」の下の新規のロケーションにあるコンパートメントAにアクセスできなくなります。別の既存のポリシーによってグループG1へのアクセス権が付与されないかぎり、G1がコンパートメントA内のバケットを引き続き管理できるように、新しいポリシーを作成する必要があります。
例3:テナンシにアタッチされているポリシーが更新される
この例では、コンパートメントAを「Operations:Test」から「HR:Prod」に移動します。コンパートメントAを管理するポリシーはテナンシにアタッチされていますが、これは元の親コンパートメントと新規親コンパートメントによって共有されている祖先です。そのため、コンパートメントが移動されると、新規コンパートメントの場所を指定するためにIAMサービスによってポリシー・ステートメントが自動的に更新されます。
ポリシー・ステートメントは次のようになります。
Allow group G1 to manage buckets in compartment Operations:Test:A
更新
Allow group G1 to manage buckets in compartment HR:Prod:A
グループG1がコンパートメントAに引き続きアクセスできるようにするために、手動操作は不要です。
コンパートメント移動時のコンパートメント割当ての理解
あるコンパートメントを別のコンパートメントに移動すると、宛先コンパートメントのリソース割当ては検証されず、強制されません。したがって、コンパートメントを移動すると宛先コンパートメントの割当て違反が発生する場合、移動はブロックされません。移動が完了すると、宛先コンパートメントは割当て超過状態になります。宛先コンパートメントの割当てを調整するか、既存の割当てに準拠してリソースを削除するまで、割当てを超えて新しいリソースを作成することはできません。コンパートメント割当ての管理の詳細は、コンパートメント割当ての概要を参照してください。
コンパートメント移動時のタグ付けの理解
タグは、コンパートメントの移動後に自動的に更新されません。コンパートメントに基づいてタグ付け戦略を実装している場合、移動後にリソースのタグを更新する必要があります。たとえば、CompartmentAにCompartmentBという子コンパートメントがあるとします。CompartmentAは、CompartmentAのすべてのリソースがTagAでタグ付けされるように、タグのデフォルトを使用して設定されています。そのため、CompartmentBとそのすべてのリソースには、デフォルトのタグであるTagAのタグが付けられます。CompartmentBをCompartmentCに移動しても、CompartmentAからデフォルトのタグがそのまま使用されます。CompartmentCのデフォルトのタグを設定した場合、移動したコンパートメントのリソースにそれらのタグを追加する必要があります。
コンソールの使用
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。アクセス権を持つコンパートメントのリストが表示されます。
-
新規コンパートメントを作成するコンパートメントに移動します。
- テナンシ(ルート・コンパートメント)にコンパートメントを作成するには、「コンパートメントの作成」をクリックします。
- それ以外の場合は、コンパートメントを作成するコンパートメントの詳細ページに達するまで、コンパートメントの階層をクリックします。コンパートメントの詳細ページで「コンパートメントの作成」をクリックします。
- 次を入力します:
- 名前:コンパートメントの一意の名前(文字、数字、ピリオド、ハイフン、アンダースコアなど、最大100文字)。名前は、テナンシ内のすべてのコンパートメントで一意である必要があります。機密情報の入力は避けてください。
- 説明: わかりやすい説明。これは必要に応じて後で変更できます。
- コンパートメント:対象のコンパートメントが表示されます。このコンパートメントを作成する別のコンパートメントを選択するには、リストから選択します。
- タグ: リソースを作成する権限がある場合、そのリソースにフリーフォーム・タグを適用する権限もあります。定義済のタグを適用するには、タグ・ネームスペースを使用する権限が必要です。タグ付けの詳細は、リソース・タグを参照してください。タグを適用するかどうかがわからない場合は、このオプションをスキップするか、管理者に連絡してください。タグは後で適用できます。
- 「コンパートメントの作成」をクリックします。
次に、コンパートメントのポリシーを記述する必要がある場合があります。ポリシーを作成するにはを参照してください。
-
ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
テナンシのコンパートメントのリストが表示されます。
-
名前を変更するコンパートメントに対して、
をクリックし、「コンパートメント名の変更」をクリックします。ヒント
ルート・コンパートメント名は変更できません。 - 新しい名前を入力します。名前は、テナンシ内のすべてのコンパートメントで一意である必要があります。名前には、文字、数字、ピリオド、ハイフンおよびアンダースコアを含め、最大100文字まで使用できます。機密情報の入力は避けてください。
- 「コンパートメント名の変更」をクリックします。
-
ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
テナンシのコンパートメントのリストが表示されます。
-
更新するコンパートメントに対して、
をクリックし、「コンパートメントの説明の編集」をクリックします。 - 新しい説明を入力します。機密情報の入力は避けてください。
- 「保存」をクリックします。
- ナビゲーション・メニューを開き、表示するリソースのタイプを選択します。たとえば、コンピュート・リソースを表示するには、ナビゲーション・メニューを開いて、「コンピュート」をクリックします。「コンピュート」で、「インスタンス」をクリックします。
- ページの左側のリストからコンパートメントを選択します。ページが更新されて、そのコンパートメントのリソースのみが表示されます。
ほとんどのIAMリソースはテナンシに存在することに注意してください(これにはユーザー、グループ、コンパートメントが含まれます)。ポリシーは、テナンシ(ルート・コンパートメント)または他のコンパートメントに存在できます。
コンパートメントを移動するには、現在のコンパートメントおよび宛先コンパートメントの最下位の共有親コンパートメントに対するmanage all-resources
権限を持つグループに属している必要があります。
-
ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
テナンシのコンパートメントのリストが表示されます。移動するコンパートメントがルート・コンパートメントの直下にない場合、コンパートメントの階層をクリックして、希望のコンパートメントを表示します。
-
移動するコンパートメントに対して、
をクリックし、「コンパートメントの移動」をクリックします。 - 宛先コンパートメントを選択します。
- 移動による影響を認識していることを確認します。
- 「コンパートメントの移動」をクリックします。
- 「コンソール」を開きます。
- ナビゲーション・メニューを開き、作業するリソースのタイプを選択します。たとえば、コンピュート・リソースを表示するには、ナビゲーション・メニューを開いて、「コンピュート」をクリックします。「コンピュート」で、「インスタンス」をクリックします。
- 「リスト範囲」セクションで、コンパートメントを選択します。選択したコンパートメントのリソースが表示されます。
- リストでリソースを検索し、 をクリックして、プロンプトに従ってリソースを新規コンパートメントに移動します。特定のステップについては、リソースのドキュメントを参照してください。
リソースがただちに移動されます。アタッチされたリソースの依存関係が親リソースと一緒に移動した場合、そのリソースの依存関係は非同期に移動され、移動が完了するまで新規コンパートメントに表示されません。
タグのデフォルトの管理を参照してください。
このコンパートメントを削除する前に、そこからすべてのリソースを削除する必要があります。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。テナンシのコンパートメントのリストが表示されます。
- 削除するコンパートメントに対して、 をクリックし、「コンパートメントの削除」をクリックします。
- プロンプトが表示されたら、「OK」をクリックします。
「OK」をクリックすると、コンパートメントを削除する作業リクエストが発行されます。コンパートメントの状態が「削除中」に変更されます。作業リクエストが失敗すると、状態は「アクティブ」に戻ります。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。テナンシのコンパートメントのリストが表示されます。
- 「状態」で、「削除済」を選択します。
- リカバリするコンパートメントに対して、 をクリックし、「リカバリ」をクリックします。
- プロンプトが表示されたら、「OK」をクリックします。
APIの使用
APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。
次のAPI操作を使用して、コンパートメントを管理します:
- CreateCompartment
- ListCompartments
- GetCompartment:コンパートメントのメタデータを返しますが、そのコンテンツは返しません。
- UpdateCompartment
- DeleteCompartment
- MoveCompartment
- GetWorkRequest:DeleteCompartment操作によって生成された作業リクエストを取得します。
- RecoverCompartment
リソース・タイプでのみ、コンパートメントのコンテンツを取得できます。コンパートメント内のすべてのリソースをリストするAPIコールはありません。たとえば、コンパートメント内のすべてのインスタンスをリストするには、Core Services API ListInstances操作をコールし、コンパートメントIDを問合せパラメータとして指定します。