アプリケーションへのセキュリティ属性の追加およびZPRポリシーの適用

アプリケーションにセキュリティ属性を追加する方法と、OCI FunctionsでZero Trust Packet Routing (ZPR)ポリシーを適用する方法をご覧ください。

OCI FunctionsでZero Trust Packet Routing (ZPR)を使用すると、ファンクションと他のOCIリソース間の相互作用に対するきめ細かい最小権限のアクセス制御を実装できます。ZPRは、機密データまたは重要な操作が複数のOCIリソースに分散され、リソース・アクセスの厳密な分離と制御が必要な環境で特に役立ちます。ZPRを使用すると、不正アクセスに関連するリスクを軽減し、保護されたリソース間のトラフィック・フローを明示的に許可するのみで、コンプライアンス・ニーズと組織セキュリティ・ポリシーの両方をサポートできます。

Zero Trust Packet Routing (ZPR)をネットワーク・セキュリティ・グループとともに使用したり、ネットワーク・セキュリティ・グループのかわりに使用して、OCIリソースへのネットワーク・アクセスを管理できます。これを行うには、リソース間の通信方法を制御するZPRポリシーを定義し、それらのリソースにセキュリティ属性を追加します。詳細は、Zero Trust Packet Routingを参照してください。

注意

エンドポイントにZero Trust Packet Routing (ZPR)セキュリティ属性がある場合、エンドポイントへのトラフィックはZPRポリシー、およびすべてのNSGおよびセキュリティ・リスト・ルールを満たす必要があります。たとえば、NSGをすでに使用していて、セキュリティ属性をエンドポイントに追加した場合、エンドポイントへのすべてのトラフィックがブロックされます。その後、ZPRポリシーはエンドポイントへのトラフィックを明示的に許可する必要があります。

OCI関数でZPRを使用するには、ZPR対応テナンシのアプリケーションにセキュリティ属性を追加します。アプリケーションにセキュリティ属性を追加すると、アプリケーションの関数は、ZPRポリシーでアクセスが許可されている場合にのみ他のOCIリソースにアクセスできます。

セキュリティ属性は、セキュリティ属性ネームスペースで定義されます。セキュリティ属性をアプリケーションに追加するには、IAMポリシーが、セキュリティ属性が定義されているネームスペースへのアクセス権を持つグループに付与する必要があります。詳細は、アプリケーションへのセキュリティ属性の追加に必要なIAMポリシーを参照してください。

セキュリティ属性を追加して他のOCIリソースにアクセスしたアプリケーションでファンクションを有効にするには、適切なZPRポリシーが存在する必要があります。このようなZPRポリシーが存在しない場合は、作成する必要があります。セキュリティー属性がほかのリソースにも追加されている場合は、これらのセキュリティー属性を持つリソースへの機能アクセスを明示的に許可するZPRポリシーを作成できます。ファンクションがアクセスする他のリソースにセキュリティ属性が追加されていない場合は、エンドポイントとして'osn-services-ip-addresses'を使用して、より許容度の高いZPRポリシーを作成できます。適切なZPRポリシーがないと、ほかのリソースへの関数のアクセスがネットワークレベルでブロックされ、関数コード内で接続エラーが発生する可能性があります。詳細は、「アプリケーション(およびファンクション)が他のリソースにアクセスできるようにするために必要なZPRポリシー」を参照してください。

重要

セキュリティ属性を追加したアプリケーションでファンクションを正常に起動するには、ファンクションのベースとなるイメージを含むOracle Cloud Infrastructure Registryリポジトリへのアクセスを有効にするために、適切なZPRポリシーが存在する必要があります。適切なZPRポリシーが存在しない場合、リポジトリからイメージをプルできないため、関数を正常に呼び出せません。

作成するZPRポリシーの詳細は、Oracle Cloud Infrastructure Registryからファンクション・イメージをプルできるようにするために必要なZPRポリシーを参照してください。

次の点を確認します。

  • セキュリティ属性が追加されたアプリケーションを表示するには、ZPRコンソール・ページを使用します(ZPRドキュメントの保護されたリソースのリストを参照)。「ZPRコンソール」ページには、OCI Functionsによって作成されたVNICも表示され、各VNICの表示名が所有アプリケーションのOCIDに設定されます。
  • アプリケーションにセキュリティー属性を追加したあと、ネットワークパスアナライザを使用すると、アプリケーションの機能で発生したネットワーク接続の問題のデバッグに役立ちます。
  • セキュリティ属性およびZPRポリシーを使用して、ネットワーク・レベルの他のOCIサービスからのOCI Functionsリソースへのアクセスを制限することは、現在サポートされていません。
  • セキュリティ属性をアプリケーションに追加し、その後、ZPRコンソール、CLIまたはAPIを使用してセキュリティ属性ネームスペースからセキュリティ属性を削除する場合は、アプリケーションからセキュリティ属性を手動で削除する必要があります。削除したセキュリティ属性をアプリケーションから削除しない場合、アプリケーションのファンクションが呼び出されると502エラーが返されます。

コンソール、OCI CLIおよびAPIを使用して、アプリケーションに対してセキュリティ属性を追加または削除できます。

アプリケーションにセキュリティ属性を追加するために必要なIAMポリシー

セキュリティ属性をアプリケーションに追加する前に、IAMポリシーで、自分が属するグループに、セキュリティ属性を含むセキュリティ属性ネームスペースを使用する権限を付与する必要があります。

例:

Allow group acme-functions-developers to use security-attribute-namespaces in tenancy

詳細は、OCI Functionsユーザーにセキュリティ属性ネームスペースへのアクセス権を付与するポリシー・ステートメントを参照してください。

セキュリティ属性ネームスペースを使用する適切なIAMポリシーが存在しない場合、アプリケーションにセキュリティ属性を追加することはできません。セキュリティ属性はコンソールに表示されず、OCI CLIまたはAPIを使用してセキュリティ属性を追加しようとすると、404 - Not Foundエラー・メッセージが返されます。

アプリケーション(および関数)が他のリソースにアクセスできるようにするために必要なZPRポリシー

OCI Functionsアプリケーションにセキュリティ属性を追加すると、そのアプリケーションの関数は、ZPRポリシーによってそのリソースへのアプリケーション・アクセス権が付与されている場合にのみ、他のリソースにアクセスできます。

適切なZPRポリシーがまだ存在しない場合は、作成する必要があります。たとえば、次の構文を使用します。

in <vcn-security-attribute> VCN allow <application-security-attribute> endpoints to connect to <destination-security-attribute> endpoints

ここでは:

  • <vcn-security-attribute>は、アプリケーションのサブネットが存在するVCNに追加されたセキュリティ属性(および値)です。たとえば、VCN-Network:myVCNです。
  • <application-security-attribute>は、アプリケーションに追加したセキュリティ属性(および値)です。たとえば、functions-app:myFuncAppAです
  • <destination-security-attribute>は、アプリケーション内のファンクションがアクセスするリソースに追加されたセキュリティ属性(および値)です。たとえば、DB-Server:App1です

例:

in VCN-Network:myVCN VCN allow functions-app:myFuncAppA endpoints to connect to DB-Server:App1 endpoints

ZPRポリシー、構文および例の詳細は、ZPRドキュメントのZero Trust Packet Routingポリシーを参照してください。

Oracle Cloud Infrastructure Registryからファンクション・イメージを取得できるようにするために必要なZPRポリシー

セキュリティ属性を追加したアプリケーションでファンクションを正常に起動するには、ファンクションのベースとなるイメージを含むOracle Cloud Infrastructure Registryリポジトリへのアクセスを有効にするには、ZPRポリシーが存在する必要があります。

適切なZPRポリシーがまだ存在しない場合は、次の構文を使用してZPRポリシーを作成する必要があります。

in <vcn-security-attribute> VCN allow <application-security-attribute> endpoints to connect to 'osn-services-ip-addresses'

ここでは:

  • <vcn-security-attribute>は、アプリケーションのサブネットが存在するVCNに追加されたセキュリティ属性(および値)です。たとえば、VCN-Network:myVCNです
  • <application-security-attribute>は、アプリケーションに追加したセキュリティ属性(および値)です。たとえば、functions-app:myFuncAppAです

例:

in VCN-Network:myVCN VCN allow functions-app:myFuncAppA endpoints to connect to 'osn-services-ip-addresses'

適切なZPRポリシーが存在しない場合、ファンクションが呼び出されると、OCI FunctionsはOracle Cloud Infrastructure Registryからイメージをプルできず、次のエラー・メッセージを返します:

Fn: Error invoking function. status: 502 message: Failed to pull function image

ZPRポリシー、構文および例の詳細は、ZPRドキュメントのZero Trust Packet Routingポリシーを参照してください。

  • コンソールを使用して既存のOCI Functionsアプリケーションに対してセキュリティ属性を追加または削除するには:

    1. 「アプリケーション」リスト・ページで、セキュリティ属性を追加または削除するアプリケーションを選択します。リストページまたはアプリケーションの検索に関するヘルプが必要な場合は、「アプリケーションのリスト」を参照してください。

      「セキュリティ」タブには、アプリケーションにすでに追加されているセキュリティ属性が表示されます(ある場合)。

    2. アプリケーションにセキュリティ属性を追加するには:

      1. 「セキュリティ」タブで、「追加」を選択し、「セキュリティ属性の追加」ダイアログで:
        • セキュリティ属性を含むセキュリティ属性ネームスペースを選択します。
        • セキュリティ属性を選択します。
        • セキュリティ属性値を入力します。
      2. アプリケーションに複数のセキュリティ属性を追加する場合は、「セキュリティ属性の追加」を選択し、追加のセキュリティ属性(最大3つ)を選択します。
      3. 「セキュリティ属性の追加」を選択します。
    3. アプリケーションからセキュリティ属性を削除するには:

      1. 「セキュリティ」タブで、削除するセキュリティ属性の横にある「アクション」メニュー(3つのドット)から「削除」を選択します。
      2. セキュリティ属性を削除することを確認します。

    アプリケーションの「セキュリティ」タブに表示されるセキュリティ属性が、アプリケーションに適用されるようになりました。

  • アプリケーションを作成するには、oci fn application createコマンドと必要なパラメータを使用します:

    oci fn application create --compartment-id <compartment-ocid> --display-name <app-name> --subnet-ids <subnet-ocids> [OPTIONS]

    アプリケーションを更新するには、oci fn application updateコマンドと必要なパラメータを使用します:

    oci fn application update --application-id <application-ocid> [OPTIONS]

    OCI CLIコマンドのフラグおよび変数オプションの完全なリストは、コマンドライン・リファレンスを参照してください。

  • APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。

    次のAPI操作を使用して、アプリケーションに対してセキュリティ属性を追加または削除します。