Añadir una política de seguridad de JavaCallout personalizada

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

¿Qué es una política de seguridad de JavaCallout personalizada?

La política JavaCallout te permite personalizar el comportamiento de tu API mediante código Java. Cuando implementas JavaCallout, Apigee define permisos predeterminados para la API mediante políticas de permisos de Java. En Apigee Hybrid, puedes cambiar los permisos predeterminados creando una política de seguridad JavaCallout personalizada.

Puedes crear una política de seguridad JavaCallout personalizada con un recurso, que se define en un archivo de recursos de tipo securityPolicy. El recurso se configura a nivel de entorno. El archivo de recursos puede tener cualquier nombre, pero debe añadir el sufijo .policy al nombre del archivo de política de Java personalizado. Por ejemplo: strict-security.policy.

El siguiente comando añade un archivo de recursos llamado 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
Los archivos de políticas de seguridad admiten la misma sintaxis que las políticas de seguridad de Java estándar. Consulta Implementación de la política predeterminada y sintaxis del archivo de políticas.

Una vez que haya creado un archivo de política de seguridad que defina una política de JavaCallout personalizada, el tiempo de ejecución de Apigee podrá detectar la política y usar los permisos personalizados que defina. Si no hay ninguna política JavaCallout personalizada, Apigee usa la política de seguridad predeterminada para el código Java o Python personalizado.

Archivo de política de seguridad

En los siguientes ejemplos se muestra contenido de muestra de un archivo de política de seguridad.

Las líneas de abajo especifican la ubicación del código de una política JavaCallout personalizada y conceden todos los permisos al directorio.

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

Estas líneas especifican la ubicación del código de un Callout personalizado de Jython o Python y conceden permisos de lectura al directorio.

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

Ejemplos

En los siguientes ejemplos se muestra cómo realizar tareas específicas relacionadas con las políticas de seguridad de JavaCallout personalizadas.

Crear una política de seguridad de llamadas de código Java personalizada

El siguiente comando crea una política de seguridad de JavaCallout personalizada, definida en el archivo de recursos llamado 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

Ver todas las políticas de seguridad

El siguiente comando te permite ver todas las políticas de seguridad de JavaCallout personalizadas que hay en tu API.

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

Ver el contenido de un archivo de política de seguridad

El siguiente comando obtiene el contenido de un archivo de política de seguridad individual para que puedas verlo.

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

Actualizar una política con ámbito en un entorno

El siguiente comando actualiza una política de seguridad cuyo ámbito es un entorno.

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

Eliminar una política de seguridad de un entorno

El siguiente comando elimina una política de seguridad cuyo ámbito es un entorno.

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