カスタム JavaCallout セキュリティ ポリシーの追加

このページは ApigeeApigee ハイブリッドに適用されます。

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

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

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

securityPolicy タイプのリソース ファイルで定義されているリソースを使用して、カスタムの JavaCallout セキュリティ ポリシーを作成できます。リソースは環境レベルで構成されます。リソース ファイルの名前は任意ですが、カスタム 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)。

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

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

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

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

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";
}

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

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

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

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 に存在するカスタム JavaCallout セキュリティ ポリシーがすべて表示されます。

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"