ポリシーの管理

このトピックでは、ポリシーの作成、編集および削除方法について説明します。

必須IAMポリシー

管理者グループにいる場合は、ポリシーを管理するために必要なアクセス権があります。

ポリシーを初めて使用する場合は、ポリシーの開始共通ポリシーを参照してください。他のユーザーがポリシーを記述したり、他のIAMコンポーネントを管理したりできるかを制御するポリシーの作成の詳細は、コンパートメント管理者によるコンパートメントの管理およびIAMの詳細も参照してください。

リソースのタグ付け

リソースにタグを適用すると、ビジネス・ニーズに応じてそれらを整理しやすくなります。リソースの作成時にタグを適用することも、後でリソースを必要なタグで更新することもできます。タグ適用についての一般情報は、リソース・タグを参照してください。

ポリシーの使用

まだ行っていない場合は、ポリシーの仕組みの基本を理解するために、ポリシーの仕組みを参照してください。

ポリシーを作成する場合、アタッチする必要があるコンパートメント(テナンシ(ルート・コンパートメント)または別のコンパートメントのいずれか)を指定する必要があります。アタッチされている場所によって、後から変更または削除できるユーザーが制御されます。詳細は、ポリシー・アタッチメントを参照してください。コンソールでポリシーを作成するときは、そのコンパートメントにポリシーを作成することで、コンパートメントにポリシーをアタッチします。APIを使用している場合は、CreatePolicyリクエストにコンパートメントの識別子を指定します。

ポリシーを作成するときは、変更不可の名前も指定する必要があります。名前は、作成するコンパートメント内のすべてのポリシーで一意である必要があります。また、ポリシーの一意でない変更可能な説明指定する必要もあります。また、Oracleは、ポリシーにOracle Cloud IDと呼ばれる一意のIDを割り当てます。詳細は、リソース識別子を参照してください。

ノート

ポリシーを削除した後に同じ名前で新しいポリシーを作成すると、別のOCIDがあるため、異なるポリシーとみなされます。

ポリシーの書込み方法の詳細は、ポリシーの仕組みおよびポリシー構文を参照してください。コンソールを使用してポリシーを記述する場合、ポリシー・ビルダーを使用して、追加するポリシーの構文を作成できます。

ポリシーの作成、既存のポリシーの変更、またはポリシーの削除を行うと、変更は通常10秒以内に有効になります。

ポリシーのリストは、コンソールまたはAPIで表示できます。コンソールでは、リストが自動的にフィルタ処理され、表示しているコンパートメントにアタッチされているポリシーのみが表示されます。特定のグループに適用されるポリシーを決定するには、すべてのポリシー内の個々のステートメントを表示する必要があります。その情報をコンソールまたはAPIで自動的に取得する方法はありません。

保有できるポリシーの数については、サービス制限を参照してください。

ポリシー・ビルダーを使用したポリシー文の記述

コンソールのポリシー・ビルダーを使用すると、ポリシー・ステートメントを手動で入力しなくても、共通ポリシーをすばやく作成できます。ポリシー・ビルダーは、テナンシ内のユーザーまたはリソースのグループ、およびインスタンス、ネットワーク、バケットなどのターゲット・リソースに管理者が付与できる権限を自動的に提案します。ポリシー・ビルダーで提示されるほとんどのポリシーは、「共通ポリシー」にもあります。ここでは、各ポリシーで提供されるアクセス権およびそれぞれのユースケースの詳細を確認できます。ポリシー・ビルダーによって提供される提案を必要としないユーザーや、より複雑なポリシー要件を持つユーザーは、ビルダーの基本オプションをバイパスして、詳細エディタに直接移動できます。このエディタでは、フリーフォーム・テキスト・ボックスにポリシー・ステートメントを直接入力できます。

ポリシー・ビルダーの機能

ポリシー・ビルダーには、テナンシのポリシーを作成するために完了できるポリシー・テンプレートが用意されています。ポリシー・テンプレートには、OCIのサービスでタスクまたは関連タスクのセットを実行する権限を提供するために必要なすべての文が含まれています。テンプレートを完成させるには、既存のグループのメニューからグループを選択し、テナンシのコンパートメントのリストからロケーションを選択します。

ポリシー・ビルダーのポリシー・テンプレートは、ネットワーク管理、ストレージ管理、アカウント管理などのユースケース別にグループ化されているため、必要な権限セットを簡単に参照および検索できます。

たとえば、テナンシのネットワーク管理者を設定するとします。ネットワーキング・サービスのすべてのリソースを操作するために必要な権限をユーザーのグループに付与する必要があります。ポリシー・ビルダーでこのポリシーを作成するには:

  • まず、目的のポリシーを見つけます。「ポリシーのユースケース」メニューから、「ネットワーク管理」を選択します。ポリシーが属するユースケースが不明な場合は、このオプションを「すべて」に設定したままにして、すべてのテンプレートを参照できます。
  • 共通ポリシー・テンプレート」メニューから、「ネットワーク管理者によるクラウド・ネットワークの管理」を選択します。

    ポリシー・ビルダーに、作成されるポリシー・ステートメントが表示されます。この場合、文は1つのみになります。

    Allow {group name} to manage virtual-network-family in {location}
  • 次に、ポリシーのグループと場所を選択します。グループを選択すると、表示されたポリシー・ステートメントの{group name}も選択内容に応じて更新されます。
  • 最後に、場所を選択します。コンパートメント階層を横断して、適切なコンパートメントを見つけて選択できます。テナンシにポリシーを作成するには、ルート・コンパートメントを選択します。

    この図は、ネットワーク管理者ポリシーを含むポリシー・ビルダーを示しています

ポリシーのカスタマイズ

テンプレートがニーズに正確に合わない場合は、文の追加、文の削除、条件の追加、または必要なポリシーを作成するためのその他の変更によって、提供されるポリシーをカスタマイズできます。自由書式のテキスト・ボックスで文を編集するには、「カスタマイズ(拡張)」をクリックします。テキスト・ボックスに文を直接入力する場合は、ポリシー構文ルールに従っていることを確認してください。

ネットワーク管理者ポリシーのカスタマイズの例:

  • 別のグループであるGroupBをこのポリシーに含める必要があります。グループを追加するには:

    カスタマイズ」(拡張)をクリックします。テキスト・ボックスに、ポリシーに対する変更を入力します(必要な構文に従います)。

    Allow group GroupA, GroupB to manage virtual-network-family in compartment CompartmentA

    この画像は、文が編集された拡張ポリシー・ビルダーのテキスト・ボックスを示しています

  • 文に条件を追加する必要があります。たとえば、MFAによって検証されたユーザーのみがネットワークを管理できるようにします。この条件は、次のように文に追加できます。
    Allow group GroupA to manage virtual-network-family in compartment CompartmentA where request.user.mfaTotpVerified='true'

    この画像は、文が編集された拡張ポリシー・ビルダーのテキスト・ボックスを示しています

  • ポリシーに別の文を追加します。たとえば、GroupAでインスタンスの使用を許可するとします。別の文を追加するには、次の行に入力します。
    Allow group GroupA to manage virtual-network-family in compartment CompartmentA
    Allow group GroupA to use instance-family in compartment CompartmentA
  • この画像は、文が編集された拡張ポリシー・ビルダーのテキスト・ボックスを示しています

ポリシー・ビルダーを使用したポリシーの編集

ポリシーを作成した後、ポリシー・テキストに直接行う必要がある文の変更を入力できます。テンプレート・セレクタは、新規ポリシーの作成時にのみ使用できます。エディタでは、文の順序を削除、追加、編集または変更できます。

この図は、2つの文を含む拡張ポリシー・ビルダー・エディタを示しています。

コンソールの使用

ポリシーを作成するには

前提条件:ポリシーを書き込むグループおよびコンパートメントはすでに存在している必要があります。

  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。表示しているコンパートメント内のポリシーのリストが表示されます。
  2. 「ポリシーの作成」をクリックします。
  3. 次を入力します:
    • 名前: ポリシーの一意の名前。この名前は、テナンシ内のすべてのポリシー間で一意である必要があります。これは後で変更できません。機密情報の入力は避けてください。
    • 説明: わかりやすい説明。これは必要に応じて後で変更できます。
    • コンパートメント:表示しているコンパートメント以外のコンパートメントにポリシーをアタッチする場合は、リストから選択します。ポリシーがアタッチされている場所によって、後で変更または削除できるユーザーが制御されます(ポリシー・アタッチメントを参照)。
  4. ポリシー・ビルダーを使用してポリシー・ステートメントを入力します。共通のポリシー・テンプレートから選択する場合は、「基本」オプションを使用します。これはカスタマイズすることもできます。必要な文の記述方法がすでにわかっていて、テキスト・ボックスに入力するだけの場合は、「カスタマイズ(詳細)」オプションを使用します。
    ポリシー・ビルダーの「基本」オプションを使用するには:
    1. ポリシー・ユースケース」メニューから選択して、ポリシー・テンプレートのリストをフィルタします。選択するユースケースがわからない場合は、「共通ポリシー・テンプレート」リストのすべてのテンプレートを参照できます。
    2. 共通ポリシー・テンプレート」リストから、要件に最適なテンプレートを選択します。

      ポリシー・ビルダーには、選択したポリシーの説明と、それに含まれるポリシー・ステートメントがリストされます。

    3. このポリシーを適用するグループを選択します。
    4. 場所を選択します。場所は、このポリシーがアクセス権を付与するコンパートメントです。ここで選択するコンパートメントは、ステップ3でポリシーをアタッチするために選択したコンパートメントか、そのコンパートメントの階層内のコンパートメントである必要があります。
    5. ポリシー・ステートメントを変更する必要がある場合は、「Customize (Advanced )」をクリックします。
    カスタマイズ(詳細)」オプションを使用するには:
    1. カスタマイズ」(拡張)をクリックします。
    2. ポリシー構文」で説明されている形式に従ってポリシー・ステートメントを入力または編集し、行ごとに1つのステートメントを入力します。
  5. このポリシーにタグを追加するには、「拡張オプションの表示」をクリックします。リソースの作成権限がある場合、そのリソースにフリーフォーム・タグを適用する権限もあります。定義済のタグを適用するには、タグ・ネームスペースを使用する権限が必要です。タグ付けの詳細は、リソース・タグを参照してください。タグを適用するかどうかわからない場合は、このオプションをスキップするか(後からでもタグを適用できます)、管理者に問い合せてください。
  6. 別のポリシーを作成する場合は、「別のポリシーの作成」を選択します。
  7. 「作成」をクリックします。

新しいポリシーは、通常は10秒以内に有効になります。

ポリシーのリストを取得するには

ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。現在表示しているコンパートメント内のポリシーのリストが表示されます。別のコンパートメントにアタッチされているポリシーを表示する場合は、左側のリストからそのコンパートメントを選択します。すべてのポリシーの単一リストを取得することはできません。これらは常にコンパートメント別に表示されます。

特定のグループに適用されるポリシーを決定するには、すべてのポリシー内の個々のステートメントを表示する必要があります。その情報をコンソールで自動的に取得する方法はありません。

既存のポリシーの説明を更新するには

APIでのみ使用可能です。回避策は、新しい説明を使用して新しいポリシーを作成し、古いポリシーを削除することです。

既存のポリシーのステートメントを更新するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。表示しているコンパートメント内のポリシーのリストが表示されます。探しているものが表示されない場合は、正しいコンパートメントを表示していることを確認します(ページの左側のリストから選択します)。
  2. 更新するポリシーをクリックします。ポリシーの詳細およびステートメントが表示されます。
  3. 「ポリシー・ステートメントの編集」をクリックします。グラフィカル・コントロールを使用して文を操作する場合は、「基本ポリシー・ビルダー」オプションを使用します。「拡張ポリシー・ビルダー」オプションを使用して、単純なテキスト・ボックスの文を編集します。

    基本」オプションを使用するには:

    • 文を修正するには、「ポリシーの基本ポリシー構文」の形式に従って変更を入力します。
    • 文を追加するには、「+Another文」をクリックし、必要な書式に従って文を入力します。
    • 文を削除するには、文の横にある「X」をクリックします。
    • 文の順序を変更するには、上下の矢印を使用して文を正しい順序に移動するか、ハンドルをクリックして文を目的の位置にドラッグ・アンド・ドロップします。
    詳細設定」オプションを使用するには:
    • 詳細」を選択します。
    • ポリシーの基本およびポリシー構文」の形式に従って、テキスト・ボックスのポリシー・ステートメントを修正します。
  4. 編集が終了したら、「変更の保存」をクリックします。

変更は、通常10秒以内に有効になります。

ポリシーを削除するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。表示しているコンパートメント内のポリシーのリストが表示されます。探しているものが表示されない場合は、正しいコンパートメントを表示していることを確認します(ページの左側のリストから選択します)。
  2. 削除するポリシーの「削除」をクリックします。
  3. プロンプトが表示されたら確認します。

変更は、通常10秒以内に有効になります。

ポリシーにタグを適用するには

手順については、「リソース・タグ」を参照してください。

APIの使用

APIの使用およびリクエストの署名の詳細は、REST APIおよびセキュリティ資格証明を参照してください。SDKの詳細は、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。

ノート

すべてのリージョンで更新が即時ではない

IAMリソースはホーム・リージョンにあります。すべてのリージョンにわたってポリシーを施行するために、IAMサービスは各リージョンにリソースをレプリケートします。ポリシー、ユーザーまたはグループを作成または変更するたびに、変更はホーム・リージョンの最初に有効になり、その後他のリージョンに伝播されます。変更がすべてのリージョンで有効になるまでに、数分かかることがあります。たとえば、テナンシ内でインスタンスを起動する権限を持つグループがあるとします。このグループにUserAを追加すると、UserAでは1分以内にホーム・リージョンのインスタンスを起動できます。ただし、UserAは、レプリケーション・プロセスが完了するまで、他のリージョンでインスタンスを起動できません。このプロセスには最大で数分かかります。レプリケーションが完了する前にUserAがインスタンスを起動しようとすると、認可されていないエラーが発生します。

ポリシーを管理するには、次のAPI操作を使用します。