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

ユーザーとOCI Functionsサービスの両方のネットワークおよびファンクション関連リソースへのアクセスを制御するポリシーを作成する方法を確認します。

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

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

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

ポリシー文

OCIファンクション・ユーザーが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|<compartment-name>

OCIファンクション・ユーザーがファンクションを使用する場合、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*/ }
OCIファンクション・ユーザーにファンクション関連リソースへのアクセス権を付与するポリシー・ステートメント
目的: 作成場所: 文:
ユーザーにファンクション関連リソースへのアクセス権を付与します ファンクション関連のリソースを所有するコンパートメント Allow group <group-name> to manage functions-family in compartment <compartment-name>
OCIファンクションによって生成されたメトリックへのアクセス権をユーザーに付与します ファンクション関連のリソースを所有するコンパートメント Allow group <group-name> to read metrics in compartment <compartment-name>

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

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

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

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

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

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

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

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

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

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

OCIファンクション・サービスおよびOCIファンクション・ユーザーにリソースのトレースへのアクセス権を付与するポリシー・ステートメント
目的: 作成場所: 文:
リソースをトレースするためのOCIファンクション・サービス・アクセス権を付与します トレース・リソースを所有するコンパートメントまたはルート・コンパートメント

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>

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

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

ポリシー・ステートメント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>は、OCIファンクションにコンパートメントまたはテナンシ全体のAPMドメインへのアクセス権を付与します。

OCIファンクション・サービスおよびOCIファンクション・ユーザーにOracle Vaultリソースへのアクセス権を付与するポリシー・ステートメント
目的: 作成場所: 文:
OCI 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'

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

OCI 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 Cloud Infrastructure Registryのイメージに基づくファンクションの作成、更新、デプロイメントおよび起動のみを許可するようにOCIファンクション・アプリケーションを構成できます。

署名検証ポリシーを作成し、署名付きファンクション・イメージを作成してデプロイするには、ユーザーがOracle Cloud Infrastructure Vaultで定義されているボールト内のマスター暗号化キーにアクセスできる必要があります。同様に、アプリケーションに対して定義された署名検証ポリシーを実施するには、OCIファンクション・サービスにも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'

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