カスタム Java コールアウト セキュリティ ポリシーの追加

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

カスタム Java Callout セキュリティ ポリシーとは

Java コールアウトを使用すると、Java コードを使用して API の動作をカスタマイズできます。Java Callout が実装されると、Apigee は Java 権限ポリシーを使用して、API のデフォルトの権限を設定します。Apigee ハイブリッドでは、カスタム Java Callout セキュリティ ポリシーを作成して、デフォルトの権限を変更できます。

securityPolicy タイプのリソース ファイルで定義されているリソースを使用して、カスタム Java Callout セキュリティ ポリシーを作成できます。リソースは環境レベルで構成されます。リソース ファイルの名前は任意ですが、カスタム Java ポリシーのファイル名の最後に .policy を付ける必要があります。例: strict-security.policy

次のコマンドは、strict-security.policy という名前のリソース ファイルを追加します。

curl -X POST "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles?name=CustomJavaSecurityPolicy&type=securityPolicy"
-H "Authorization: Bearer $TOKEN" \
-H "Content-type: multipart/form-data" \
-F file=@/Users/home/strict-security.policy
セキュリティ ポリシー ファイルは、標準 Java セキュリティ ポリシーと同じ構文をサポートしています(参照: Default Policy Implementation and Policy File Syntax)。

カスタム Java Callout ポリシーを定義するセキュリティ ポリシー ファイルを作成すると、Apigee ランタイムはポリシーを検出し、ポリシーで定義したカスタム権限を使用できます。カスタム Java Callout ポリシーが存在しない場合、Apigee はカスタム Java コードまたは Python コードにデフォルトのセキュリティ ポリシーを使用します。

セキュリティ ポリシー ファイル

次の例は、セキュリティ ポリシー ファイルのサンプルを示したものです。

次の行は、カスタム Java Callout のコードの場所を指定し、そのディレクトリにすべての権限を付与しています。

Relaxed security policy file for testing
// javacallout code has just read permission in the installed dir and everything below it
  grant codeBase "file:${javacallout.dir}/-"  {
    permission java.security.AllPermission;
}

これらの行は、カスタム Jython / Python コールアウトのコードの場所を指定し、そのディレクトリに読み取り権限を付与しています。

// Jython/Python secure
grant codeBase "file:${jython-secure-jar}" {
    // No logging permissions for secure jar. Hence value of the AllExcept target parameter set to 0
    permission com.apigee.securitypolicy.AllExcept "0", "java.io.FilePermission";
    permission java.io.FilePermission "{T}conf_security-policy_install.dir{/T}/lib/-" , "read";
    // Add JRE read permissions to jython. Existing permissions have two formats to java home. Keep the same.
    permission java.io.FilePermission "${java.home}/-", "read,readLink";
    permission java.io.FilePermission "${JAVA_HOME}/-", "read,readLink";
}

次の例は、カスタム Java Callout セキュリティ ポリシーに関連する特定のタスクを実行する方法を示しています。

カスタム Java Callout セキュリティ ポリシーを作成する

次のコマンドは、strict-security.policy という名前のリソース ファイルで定義されたカスタム Java Callout セキュリティ ポリシーを作成します。

curl -X POST "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles?name=CustomJavaSecurityPolicy&type=securityPolicy"
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type: multipart/form-data" \
  -F file=@/Users/home/strict-security.policy

すべてのセキュリティ ポリシーを表示する

次のコマンドを使用すると、API に存在するカスタム Java Callout セキュリティ ポリシーがすべて表示されます。

curl -X GET "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/securityPolicy" \
  -H "Authorization: Bearer $TOKEN"

セキュリティ ポリシー ファイルの内容を表示する

次のコマンドを実行すると、個々のセキュリティ ポリシー ファイルの内容を取得できます。

curl -X GET "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/securityPolicy/CustomJavaSecurityPolicy" \
  -H "Authorization: Bearer $TOKEN"

環境をスコープとするポリシーを更新する

次のコマンドを使用すると、環境をスコープとするセキュリティ ポリシーが更新されます。

curl -X PUT "https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/securityPolicy/CustomJavaSecurityPolicy"
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type: multipart/form-data" \
  -F file=@/Users/home/strict-security-revised.policy

環境をスコープとするセキュリティ ポリシーを削除する

次のコマンドを使用すると、環境をスコープとするセキュリティ ポリシーが削除されます。

curl -X DELETE https://apigee.googleapis.com/v1/organizations/my-organization/environments/test/resourcefiles/securityPolicy/CustomJavaSecurityPolicy \
  -H "Authorization: Bearer $TOKEN"