ファンクション開発のためのテナンシの準備

ファンクションが別のOracle Cloud Infrastructureリソースにアクセスできるようにするには、そのファンクションを動的グループに含めてから、そのリソースへのアクセス権を動的グループに付与するポリシーを作成する必要があります。

関数の動的グループの作成

動的グループを使用すると、Oracle Cloud Infrastructureコンピュータ・インスタンスをプリンシパルのアクターとしてグループ化できます(ユーザー・グループと同様)。その後、インスタンスがOracle Cloud Infrastructureサービスに対してAPIコールを実行できるようにするポリシーを作成できます。

動的グループを作成する場合は、メンバーをグループに明示的に追加するのではなく、一致ルールのセットを定義してグループ・メンバーを定義します。たとえば、ルールで、特定のコンパートメント内のすべてのインスタンスが動的グループのメンバーであることを指定できます。メンバーは、そのコンパートメントでインスタンスが起動および終了すると動的に変更されます。

  1. コンソールを開き、「アイデンティティ」をクリックしてから、「動的グループ」をクリックします。テナンシ内の動的グループのリストが表示されます。
  2. 動的グループの作成」をクリックします。
  3. 次を入力します:
    • 名前:グループの一意の名前。この名前は、テナンシ内のすべてのグループ(動的グループおよびユーザー・グループ)で一意である必要があります。これは後で変更できません。
    • 説明:わかりやすい説明。これはコンソールで変更できませんが、APIを使用して変更できます。
  4. 一致ルール」を入力します。ルール基準を満たすリソースはグループのメンバーです。
    • ルール1:コンパートメント内のすべてのファンクションがリソースにアクセスできるようにするには、次のようなルールを入力します。<compartment_id>は、アプリケーションおよび関連するファンクションがデプロイされるコンパートメントのOCIDです。
      ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_id>'}
    • 必要に応じて追加ルールを入力します。ルールを追加するには、「+Additionalルール」をクリックします。

  5. リソースを作成する権限がある場合は、そのリソースにフリーフォーム・タグを適用する権限もあります。定義済のタグを適用するには、タグ・ネームスペースを使用する権限が必要です。タグを適用する必要があるかどうか不明な場合は、このオプションをスキップするか(後でタグを適用できます)、管理者に問い合せてください。
  6. 動的グループの作成」をクリックします。

    一致ルールの構文は検証されますが、ルールで使用したOCIDは検証されません。入力したOCIDが正しいことを確認してください。

ファンクションのポリシーの作成

ポリシーを使用すると、グループは特定のコンパートメント内の特定のタイプのリソースを特定の方法で操作できます。

ポリシーを書き込むグループおよびコンパートメントがすでに存在する必要があります。

次のステップでは、アプリケーションおよび関連付けられたファンクションがデプロイされるコンパートメント、およびインスタンスのルート・コンパートメントにポリシーを追加します。

  1. ナビゲーション・メニューを開きます。「ガバナンスと管理」で、「アイデンティティ」、「ポリシー」の順にクリックします。
    表示しているコンパートメント内のポリシーのリストが表示されます。
  2. 左側のコンパートメントのリストから、アプリケーションおよび関連付けられているファンクションをデプロイするコンパートメントを選択します。
  3. ポリシーの作成をクリックします。
  4. 次の情報が提供されます。
    • 名前:ポリシーの一意の名前。この名前は、テナンシ内のすべてのポリシー間で一意である必要があります。これは後で変更できません。
    • 説明:わかりやすい説明。これは、必要に応じて後で変更できます。
    • ポリシー・バージョニング:動詞およびリソースのサービスの定義を今後変更してもポリシーを最新の状態に保つ場合は、「ポリシーを最新の状態に保つ」を選択します。または、特定の日付の現在の定義に従ってアクセスを制限する場合は、「バージョン日付の使用」を選択し、その日付をYYYY - MM - DDの書式で入力します。
  5. ポリシーを指定します。1つ以上の事前定義文を追加するには、「カスタマイズ」(「詳細設定」)をクリックします。
    次のポリシー・ステートメントを追加します。ここで、<group_name>は関連付けられている動的グループの名前、<compartment_name>はアプリケーションおよび関連付けられている関数がデプロイされるコンパートメントです:
    • ファンクションがコンパートメント内のリソースにアクセスできるようにするには、次の文を追加します。
      Allow dynamic-group <group_name> to manage buckets in compartment <compartment_name>
      Allow dynamic-group <group_name> to manage objects in compartment <compartment_name>
      allow dynamic-group <group_name> to use autonomous-databases in compartment <compartment_name> where request.permission='AUTONOMOUS_DATABASE_CONTENT_READ'
      Allow dynamic-group <group_name> to inspect instances in compartment <compartment_name>
      Allow service FaaS to use virtual-network-family in compartment <compartment_name>
      Allow group fleetAdmins to manage functions-family in compartment <compartment_name>
    • 次の文を追加して、ファイルがOracle Cloud Infrastructure Object StorageにアップロードされたときにOracle Cloud Infrastructure Eventsがファンクションをコールできるようにします。
      Allow dynamic-group <group_name> to inspect streams in compartment <compartment_name>
      Allow dynamic-group <group_name> to manage cloudevents-rules in compartment <compartment_name>
      Allow dynamic-group <group_name> to use stream-push in compartment <compartment_name>
      Allow dynamic-group <group_name> to use stream-pull in compartment <compartment_name>
  6. 作成」をクリックします。
    新規に作成されたポリシーがコンパートメントのポリシーとともにリストされます。
  7. 左側のコンパートメントのリストから、ルート・コンパートメント(< instance - name > (root))を選択し、前述のステップ3と4を繰り返します。
  8. ポリシーを指定します。1つ以上の事前定義文を追加するには、「カスタマイズ」(「詳細設定」)をクリックします。
    次のポリシー・ステートメントを追加します。<compartment_name>は、アプリケーションおよび関連するファンクションがデプロイされるコンパートメントです:
    Allow service FaaS to manage repos in tenancy
    Allow service FaaS to use virtual-network-family in compartment <compartment_name>
  9. 作成」をクリックします。
    新規に作成されたポリシーがルート・コンパートメントのポリシーとともにリストされます。