添加自定义 Java 标注安全政策

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

什么是自定义 Java 标注安全政策?

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

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

创建用于定义自定义 Java 标注政策的安全政策文件后,Apigee 运行时便可以检测政策并使用该政策定义的自定义权限。如果不存在任何自定义 Java 标注政策,Apigee 将为自定义 Java 或 Python 代码使用默认安全政策。

安全政策文件

以下示例展示了安全政策文件的示例内容。

以下行指定自定义 Java 标注的代码位置,并授予对该目录的所有权限。

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 标注安全政策相关的特定任务。

创建自定义 Java 标注安全政策

以下命令会创建一个在名为 strict-security.policy 的资源文件中定义的自定义 Java 标注安全政策。

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 标注安全政策。

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"