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