添加自定义 JavaCallout 安全政策

本页面适用于 Apigee 和 Apigee Hybrid。

查看 Apigee Edge 文档。

什么是自定义 JavaCallout 安全政策?

��助 JavaCallout 政策,您可以使用 Java 代码自定义 API 的行为。实现 JavaCallout 后,Apigee 会使用 Java 权限政策设置默认 API 权限。您可以在 Apigee Hybrid 中通过创建自定义 JavaCallout 安全政策来更改默认权限。

您可以使用在 securityPolicy 类型的资源文件中定义的资源来创建自定义 JavaCallout 安全政策。此资源是在环境级层进行配置的。资源文件可以采用任何名称,但您必须将 .policy 后缀添加到自定义 Java 政策文件名中。例如: 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 安全政策相同的语法;请参阅默认政策实现和政策文件语法。

创建用于定义自定义 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"