ネットワークおよびファンクション関連リソースへのアクセスを制御するポリシーの作成

Oracle Functionsを使用してファンクションの作成およびデプロイを開始する前に、テナンシ管理者として複数のOracle Cloud Infrastructureポリシー・ステートメントを作成して、ファンクション関連リソースおよびネットワーク・リソースへのアクセス権を付与する必要があります。

ポリシー・ビルダーを使用して適切なポリシーを作成するには、「ポリシーのユースケース」として「ファンクション」を選択し、「ユーザーによるファンクションとアプリケーションの作成、デプロイおよび管理」ポリシー・テンプレートを選択します。そのポリシー・テンプレートには、Oracle Functionsを使用するために必要なすべてのポリシー・ステートメントが含まれます。ポリシー・ビルダーを使用したポリシー・ステートメントの記述を参照してください。

または、ポリシー・ステートメントを含む1つ以上のポリシーを作成できます(ポリシーを作成するにはの手順に従います)。

ポリシー文

Oracle FunctionsユーザーにOracle Cloud Infrastructure Registryリポジトリにアクセスするためのポリシー・ステートメント
目的: 作成場所: 文:
ユーザーは、テナンシのオブジェクト・ストレージ・ネームスペース文字列を取得できます ルート・コンパートメント Allow group <group-name> to read objectstorage-namespaces in tenancy
ユーザーがOracle Cloud Infrastructure Registryのリポジトリへのアクセス権を付与します ルート・コンパートメント Allow group <group-name> to manage repos in tenancy

Oracle Functionsユーザーがファンクションを使用する場合、Oracle Cloud Infrastructure Registryのリポジトリにアクセスする必要があります。ユーザーは、自分が属するグループがアクセス権を付与されているリポジトリにのみアクセスできます。ユーザーがリポジトリにアクセスできるようにするには、ポリシー・ステートメントがそのリポジトリへのアクセス権をグループに付与する必要があります。

ポリシー・ステートメントAllow group <group-name> to read objectstorage-namespaces in tenancyを使用すると、ユーザーは、Oracle Cloud Infrastructure Registryにログインするために必要なテナンシの自動生成されたオブジェクト・ストレージ・ネームスペース文字列を取得できます。このポリシー・ステートメントでは、Oracle Cloud Infrastructure Object Storageのストレージ・バケットに格納されたファンクション・ログへのアクセスも提供されます(ファンクション・ログの保存および表示を参照してください)。

ポリシー・ステートメントAllow group <group-name> to manage repos in tenancyは、ユーザーにOracle Cloud Infrastructure Registry内のリポジトリへのアクセス権を付与します。このポリシー・ステートメントは、グループにテナンシ内のすべてのリポジトリを管理する権限を付与します。これでは許容性が高すぎると思われる場合、manage repos文にwhere句を含めることで、グループがアクセスできるリポジトリを制限できます。Where句を含める場合、グループがテナンシ内のすべてのリポジトリを調査できるようにするために、ポリシーに2番目の文も含める必要があります(コンソールを使用する場合)。たとえば、次のポリシー・ステートメントは、'acme-web-app'で始まる名前のリポジトリのみにアクセスするようにグループを制限しますが、テナンシ内のすべてのリポジトリをグループが検査できるようにもします:

Allow group acme-functions-developers to inspect repos in tenancy
Allow group acme-functions-developers to manage repos in tenancy where all {target.repo.name=/acme-web-app*/ }
Oracle Functionsユーザーにファンクション関連リソースにアクセスするためのポリシー・ステートメント
目的: 作成場所: 文:
ユーザーにファンクション関連リソースへのアクセス権を付与します ファンクション関連のリソースを所有するコンパートメント Allow group <group-name> to manage functions-family in compartment <compartment-name>
Oracle Functionsから生成されたメトリックへのユーザー・アクセスを提供します ファンクション関連のリソースを所有するコンパートメント Allow group <group-name> to read metrics in compartment <compartment-name>

Oracle Functionsユーザーがファンクションおよびアプリケーションを作成するとき、これらのファンクション関連リソース(Oracle Functionsが生成するメトリックを含む)のコンパートメントを指定する必要があります。ユーザーは、所属するグループがアクセス権を付与されているコンパートメントのみ指定できます。ユーザーによるコンパートメントの指定を可能にするために、ポリシー・ステートメントはそのコンパートメントへのアクセスをグループに付与する必要があります。

ポリシー・ステートメントAllow group <group-name> to manage functions-family in compartment <compartment-name>は、ユーザーにファンクション関連リソースへのアクセス権を付与します。

ポリシー・ステートメントAllow group <group-name> to read metrics in compartment <compartment-name>は、Oracle Functionsによって発行されたメトリックへのアクセス権をユーザーに付与します。

Oracle Functionsユーザーにロギング・リソースにアクセスするためのポリシー・ステートメント
目的: 作成場所: 文:
ユーザーにロギング・リソースへのアクセス権を付与します ルート・コンパートメント

Allow group <group-name> to manage logging-family in compartment <compartment-name>

Oracle Functionsユーザーがアプリケーションを定義すると、ロギングを有効化して、Oracle Cloud Infrastructure Loggingサービスでファンクション・ログを格納および表示できます。ユーザーは、自分が属するグループがアクセス権を付与されているログのみを表示できます。Oracle Cloud Infrastructure Loggingサービスでユーザーがファンクション・ログを格納および表示できるように、ポリシー・ステートメントは、ロギング・リソースへのアクセスをグループに付与する必要があります。

ポリシー・ステートメントAllow group <group-name> to manage logging-family in compartment <compartment-name>は、ロギング・リソースを所有するコンパートメント内のロギング・リソースに対する完全なアクセス権をユーザーに付与します

Oracle Functionsにネットワーク・リソースにアクセスするためのポリシー・ステートメント
目的: 作成場所: 文:
ユーザーにネットワーク・リソースへのアクセス権を付与します ネットワーク・リソースを所有するコンパートメント Allow group <group-name> to use virtual-network-family in compartment <compartment-name>

Oracle Functionsユーザーがファンクションまたはアプリケーションを作成する場合、作成先のVCNおよびサブネットを指定する必要があります。ユーザーは、属しているグループがアクセス権を付与されているコンパートメントにあるVCNおよびサブネットのみを指定できます。ユーザーによるVCNおよびサブネットの指定を可能にするために、ポリシー・ステートメントはグループに対してコンパートメントへのアクセスを許可する必要があります。

Oracle FunctionsユーザーがNSGを使用して特定のアプリケーションのすべての関数に適用されるイングレスおよびエグレス・ルールを定義する場合、そのユーザーはそのNSGにアプリケーションを追加できます。NSGにアプリケーションを追加するには、同様のポリシー・ステートメントで、NSGが属するコンパートメントへのアクセス権をユーザーが属するグループに付与する必要があります。NSGは、関数のサブネットとは異なるコンパートメントに属している可能性があります。詳細は、ネットワーク・セキュリティ・グループ(NSG)へのアプリケーションの追加を参照してください。

Oracle FunctionsサービスとOracle Functionsユーザーにトレース・リソースへのアクセス権を付与するポリシー・ステートメント
目的: 作成場所: 文:
Oracle Functionsサービスがリソースをトレースするためのアクセスを提供します トレース・リソースを所有するコンパートメントまたはルート・コンパートメント

Allow service faas to use apm-domains in tenancy|compartment <compartment-name>

ユーザーにリソースのトレースへのアクセス権を付与します トレース・リソースまたはルート・コンパートメントを所有するコンパートメント

Allow group <group-name> to use apm-domains in tenancy|compartment <compartment-name>

Oracle Functionsユーザーは、ファンクションが実行されない理由または予想どおりに実行されない理由を調査する必要がある場合、トレースを使用して実行およびパフォーマンスの問題をデバッグできます。トレースを使用するには、関数を含むアプリケーションのトレースを有効にしてから、1つ以上の関数のトレースを有効にする必要があります。ユーザーは、Application Performance Monitoring (APM) Trace Explorerでファンクション・トレースを表示できます。詳細は、「関数の分散トレース」を参照してください。

ユーザーは、所属するグループが既存のAPMドメインにアクセスできる場合(または新しいAPMドメインを作成)、およびOracle FunctionsがAPMドメインにアクセスできる場合のみ、トレースを有効にできます。ユーザーがトレースをオンにしてトレースを表示できるようにするには、ポリシー・ステートメントで、APMドメインへのグループおよびOracle Functionsアクセス権を付与する必要があります。

ポリシー・ステートメントAllow group <group-name> to use apm-domains in tenancy|compartment <compartment-name>は、コンパートメントまたはテナンシ全体のリソースのトレースへのアクセス権をユーザーに付与します。ユーザーが新しいAPMドメインを作成できるようにする場合(およびAPMドメインを削除する場合)、use apm-domainsのかわりにmanage apm-domainsを指定します。

ポリシー・ステートメントAllow service faas to use apm-domains in tenancy|compartment <compartment-name>は、コンパートメント内のAPMドメインまたはテナンシ全体へのOracle Functionsアクセスを付与します。

Oracle FunctionsサービスとOracle FunctionsユーザーにOracle Vaultリソースへのアクセス権を付与するポリシー・ステートメント
目的: 作成場所: 文:
Oracle Functionsサービスへのアクセス権を付与して、Oracle Cloud Infrastructure Vaultのマスター暗号化キーを検証します ボールトまたはマスター暗号化キー(あるいはその両方)またはルート・コンパートメントを所有するコンパートメント

Allow service faas to {KEY_READ} in tenancy|compartment <compartment-name> where request.operation='GetKeyVersion'

Allow service faas to {KEY_VERIFY} in tenancy|compartment <compartment-name> where request.operation='Verify'

(より制限的なポリシー・ステートメントが必要な場合は、次の例を参照してください)

Oracle FunctionsサービスがOracle Cloud Infrastructure Registryで署名付きイメージにアクセスする ルート・コンパートメント

Allow service faas to read repos in tenancy where request.operation='ListContainerImageSignatures'

ユーザーに、Oracle Cloud Infrastructure Vaultのボールトおよびマスター暗号化キーへのアクセス権を付与します ボールトまたはマスター暗号化キー(あるいはその両方)またはルート・コンパートメントを所有するコンパートメント

Allow group <group-name> to read vaults in tenancy|compartment <compartment-name>

Allow group <group-name> to use keys in tenancy|compartment <compartment-name>

(より制限的なポリシー・ステートメントが必要な場合は、次の例を参照してください)

ユーザーに、Oracle Cloud Infrastructure Registryの署名済イメージへのアクセス権を付与します ルート・コンパートメント

Allow group <group-name> to read repos in tenancy

ユーザーは、Oracle Functionsアプリケーションを構成して、特定のマスター暗号化キーによって署名されたOracle Cloud Infrastructure Registryのイメージに基づくファンクションの作成、更新、デプロイメントおよび呼出しのみを許可できます。

署名検証ポリシーを作成し、署名済ファンクション・イメージを作成およびデプロイするには、ユーザーがOracle Cloud Infrastructure Vaultで定義されたボールト内のマスター暗号化キーにアクセスできる必要があります。同様に、アプリケーションに定義されている署名検証ポリシーを強制するには、Oracle FunctionsサービスもOracle Cloud Infrastructure Vaultで定義されたマスター暗号化キーにアクセスできる必要があります。

ファンクション・イメージ署名および署名の検証に使用できるマスター暗号化鍵を制限できます。たとえば、次のようなポリシーを使用します。

Allow service faas to {KEY_READ} in compartment <compartment-name> where target.key.id = '<ocid-of-key-in-verification-policy>' and request.operation = 'GetKeyVersion'
Allow service faas to {KEY_VERIFY} in compartment <compartment-name> where target.key.id = '<ocid-of-key-in-verification-policy>' and request.operation = 'Verify'
Allow group <groupname> to {KEY_READ} in compartment <compartment-name> where ALL {target.key.id = '<ocid-of-key-in-verification-policy>', ANY {request.operation = 'GetKey', request.operation = 'GetKeyVersion'}}
Allow group <groupname> to {KEY_VERIFY} in compartment <compartment-name> where target.key.id = '<ocid-of-key-in-verification-policy>' and request.operation = 'Verify'

詳細および例については、ファンクション・イメージの署名およびレジストリからの署名済イメージの使用の強制を参照してください。