他のテナンシのリポジトリからのイメージのプル

OCIファンクションを使用して、あるテナンシのアプリケーションのファンクションが別のテナンシのリポジトリからイメージをプルするために必要なIAMポリシーを確認します。

ファンクションが初めて起動されると、OCI FunctionsはOracle Cloud Infrastructure Registryのリポジトリからファンクションのイメージをプルし、イメージをコンテナとして実行し、ファンクションを実行します。通常、ファンクションのアプリケーションは、イメージを含むリポジトリと同じテナンシにあります。ただし、必要なクロステナンシ・ポリシーが存在する場合、ファンクションのアプリケーションは、イメージを含むリポジトリとは異なるテナンシに配置できます。

ポリシーを初めて使用する場合は、アイデンティティ・ドメインの管理を参照し、次を参照してください:

クロステナンシ・ポリシー

組織では、あるテナンシ内のアプリケーション内のファンクションが、別の組織によって作成されたイメージをプルし、そのテナンシ内のリポジトリに格納することが必要な場合があります。もう1つの組織は、会社内の別のビジネス・ユニット、会社の顧客、会社にサービスを提供する会社などの場合があります。このような場合、ネットワークおよびファンクション関連リソースへのアクセスを制御するポリシーの作成で説明されている必要なユーザー・ポリシーおよびサービス・ポリシーに加えて、クロステナンシ・ポリシーが必要です。

承認、許可および定義ステートメント

2つのテナンシ間でリソースにアクセスして共有するには、両方のテナンシの管理者は、アクセスと共有が可能なリソースを明示的に示す特別なポリシー・ステートメントを作成する必要があります。これらの特別なステートメントは、定義承認および許可という語句を使用します。

クロステナンシ・ステートメントで使用される特別な動詞の概要は次のとおりです:

  • 承認: 独自のテナンシ内のグループが他のテナンシ内で実行できる一般的な機能セットを示します。承認ステートメントは、そのテナンシのリソースを使用する他のテナンシへの境界を超えるグループのテナンシに常に属します。例では、このテナンシはソース・テナンシと呼ばれます。
  • 許可: 別のテナンシからグループに付与する独自のテナンシの機能の種類を示します。許可ステートメントは、テナントへの「許可」したテナンシに属します。許可ステートメントは、ソース・テナンシ(対応する承認ステートメントで特定される)からのリソース・アクセスを必要とするグループを識別します。例では、このテナンシは宛先テナンシと呼ばれます。
  • 定義: 承認および許可ポリシー・ステートメントのテナンシOCIDに別名を割り当てます。

    定義ステートメントは、承認または許可ステートメントと同じポリシー・エンティティに含める必要があります。

承認および許可ステートメントは連携して動作しますが、それぞれのテナンシの別々のポリシーに存在します。アクセス権を指定する対応ステートメントがない場合、特定の承認または許可ステートメントはアクセス権を与えません。両方のテナンシから合意が必要です。

ソース・ポリシー

ソース・テナンシのアプリケーションでファンクションが宛先テナンシのリポジトリからイメージをプルできるようにするには、ソース管理者がソース・テナンシに次のIAMポリシーを作成します:

  • アクセスするリソースを含む宛先テナンシを定義します(宛先管理者は宛先テナンシのOCIDを指定する必要があります)
  • ソース・テナンシ内のアプリケーションのファンクションをエンドースして、宛先テナンシ内のリポジトリからイメージをプルします

ソース・テナンシのポリシー・ステートメントの形式は次のとおりです:

Define tenancy <destination-tenancy> as '<tenancy-ocid>'

Endorse any-user to { REPOSITORY_READ } in tenancy <destination-tenancy> where all { request.principal.type = 'fnapp', request.principal.repo_name = target.repo.name}

ここでは:

  • <destination-tenancy>は、イメージを含むテナンシの便利な別名です。たとえば、image-tenancyです。
  • <tenancy-ocid>は、イメージを含むテナンシのOCIDです。たとえば、ocid1.tenancy.oc1..aaaa______ggqです

例:

Define tenancy image-tenancy as 'ocid1.tenancy.oc1..aaaa______ggq'

Endorse any-user to { REPOSITORY_READ } in tenancy image-tenancy where all { request.principal.type = 'fnapp', request.principal.repo_name = target.repo.name}

宛先ポリシー

ソース・テナンシ内のアプリケーションのファンクションが宛先テナンシ内のリポジトリからイメージをプルできるように、宛先管理者は、次のIAMポリシーを宛先テナンシに作成します:

  • 宛先テナンシのリソースへのアクセスを許可されるソース・テナンシを定義します(ソース管理者はソース・テナンシのOCIDを指定する必要があります)
  • ソース・テナンシ内のアプリケーション内のファンクションが、宛先テナンシのリポジトリからイメージをプルすることを許可します

イメージを含む宛先テナンシのポリシー・ステートメントの形式は次のとおりです:

Define tenancy <source-tenancy> as '<tenancy-ocid>'

Admit any-user of tenancy <source-tenancy> to { REPOSITORY_READ } in tenancy where all { request.principal.type = 'fnapp', request.principal.repo_name = target.repo.name}

ここでは:

  • <source-tenancy>は、ファンクションのアプリケーションを含むテナンシの便利な別名です。たとえば、application-tenancyです。
  • <tenancy-ocid>は、ファンクションのアプリケーションを含むテナンシのOCIDです。たとえば、ocid1.tenancy.oc1..aaaa______abcです

例:

Define tenancy application-tenancy as 'ocid1.tenancy.oc1..aaaa______abc'

Admit any-user of tenancy application-tenancy to { REPOSITORY_READ } in tenancy where all { request.principal.type = 'fnapp', request.principal.repo_name = target.repo.name}