Las directivas de seguridad brindan protección del lado del cliente para las operaciones de Alibaba Cloud CLI. Cuando están habilitadas, la CLI compara cada comando con las reglas configuradas para permitir o denegar la operación, o bien solicitar una confirmación manual.
Descripción general
Las directivas de seguridad definen un conjunto de reglas. Cada regla consta de un patrón (criterios de coincidencia) y una acción (tipo de respuesta):
allow(permitir): Permite explícitamente la operación y omite la evaluación de reglas posteriores. Coloque una reglaallowantes que las reglasdenyoconfirmmás generales para crear excepciones en operaciones específicas.deny(bloquear): Bloquea la operación por completo. La CLI rechaza el comando y no envía la solicitud de API.confirm(requerir aprobación): En una terminal interactiva, la CLI le solicita que escribayesantes de continuar. En un entorno no interactivo, la CLI devuelve un error con instrucciones para quien realiza la llamada.
Las directivas de seguridad se aplican tanto a llamadas OpenAPI (RPC y RESTful) como a comandos de plugin. Complementan el control de acceso del lado del servidor (RAM), pero no reemplazan las directivas de permisos de RAM.
Escenarios
Salvaguardas de seguridad para agentes de IA: Cuando un agente de IA utiliza la CLI para gestionar recursos en la nube, una directiva de seguridad puede interceptar operaciones destructivas (como eliminaciones) y exigir confirmación humana o bloquearlas por completo. Esto proporciona un mecanismo de humano en el bucle (HITL).
Protecciones operativas: Configure reglas predeterminadas en los entornos de CLI de su equipo para evitar la ejecución accidental de operaciones destructivas, como eliminar recursos o detener instancias.
Requisitos previos
-
Debe tener instalada la versión 3.3.14 o posterior de Alibaba Cloud CLI. Ejecute el siguiente comando para comprobar su versión actual:
aliyun version -
Las credenciales de la CLI deben estar configuradas. Si aún no ha configurado las credenciales, ejecute el siguiente comando:
aliyun configure
Gestionar directivas de seguridad
Las directivas de seguridad se gestionan mediante la familia de comandos aliyun configure safety-policy.
Consultar la directiva actual
Ejecute el siguiente comando para ver la configuración de la directiva de seguridad en formato JSON:
aliyun configure safety-policy show
Salida de ejemplo:
{
"enabled": false,
"rules": []
}
Habilitar y deshabilitar
# Enable safety policy
aliyun configure safety-policy enable
# Disable safety policy
aliyun configure safety-policy disable
Ejecute aliyun configure safety-policy show para comprobar que el campo enabled tenga el valor true.
Agregar reglas
Sintaxis del comando:
aliyun configure safety-policy add --pattern <pattern> --action <deny|confirm>
Ejemplo: Bloquear todas las operaciones de eliminación en todos los productos:
aliyun configure safety-policy add --pattern '*:Delete*' --action deny
Ejemplo: Solicitar confirmación humana para las operaciones de actualización de ECS:
aliyun configure safety-policy add --pattern 'ecs:Update*' --action confirm
Ejecute aliyun configure safety-policy list para verificar que la regla se haya agregado correctamente.
Si agrega una regla con un patrón que ya existe, la CLI actualiza la acción correspondiente a ese patrón en lugar de crear una entrada duplicada.
El subcomando add solo acepta deny, confirm y forbid como valores de acción. Para configurar una regla allow, establezca la variable de entorno ALIBABA_CLOUD_SAFETY_POLICY_RULES o edite directamente el archivo de configuración.
Eliminar reglas
Especifique el patrón exacto para eliminar una regla:
aliyun configure safety-policy remove --pattern '*:Delete*'
Listar reglas
Ejecute el siguiente comando para ver todas las reglas en una lista con formato:
aliyun configure safety-policy list
Salida de ejemplo:
Safety policy: enabled
Config file: /home/user/.aliyun/safety-policy.json
Rules:
1. *:Delete* -> deny
2. ecs:Update* -> confirm
Sintaxis de las reglas
Formato del patrón
El parámetro --pattern utiliza el formato {product}:{operation} y admite el comodín * para coincidir con cualquier secuencia de caracteres. La coincidencia de patrones no distingue entre mayúsculas y minúsculas: *:Delete*, *:DELETE* y *:delete* coinciden con las mismas operaciones.
La CLI genera identificadores de comando distintos según el estilo de API:
|
Estilo de API |
Formato del patrón |
Ejemplo |
|
RPC |
|
|
|
RESTful |
|
|
|
Plugin |
|
|
Ejemplos comunes de patrones:
|
Patrón |
Coincidencias |
|
|
Todas las operaciones que contienen "Delete" en todos los productos (sin distinción entre mayúsculas y minúsculas) |
|
|
Únicamente la operación delete-instance de ECS |
|
|
Todas las operaciones de ECS que comienzan con "Update" |
|
|
Todas las operaciones en todos los productos |
Al ejecutar comandos en una shell, encierre los valores del patrón entre comillas simples (por ejemplo, '*:Delete*') para evitar que la shell expanda el comodín *.
Valores de acción
|
Acción |
Comportamiento |
|
|
Permite explícitamente la operación. En un sistema de reglas donde prevalece la primera coincidencia, coloque una regla |
|
|
Bloquea la operación y devuelve un error. La CLI no envía la solicitud de API. |
|
|
Solicita confirmación en una terminal interactiva. El usuario debe escribir |
forbid es un alias de confirm. Ambos producen un comportamiento idéntico en tiempo de ejecución.
Si ninguna regla coincide, la operación se permite de forma predeterminada (permiso implícito). Las reglas allow explícitas se utilizan para crear excepciones antes que las reglas deny o confirm más generales.
Orden de evaluación de reglas
Las reglas se evalúan de arriba hacia abajo en el orden configurado, mediante una estrategia de primera coincidencia: la primera regla que coincide surte efecto y no se revisan las siguientes. Si ninguna regla coincide, el comportamiento predeterminado es permitir la ejecución.
Por ejemplo, dadas las siguientes dos reglas:
ecs:Delete*→ confirm*:Delete*→ deny
Cuando ejecuta aliyun ecs delete-instance, la primera regla (ecs:Delete*) coincide y se aplica la acción confirm, no la acción deny de la segunda regla.
Uso de allow para crear excepciones:
ecs:Describe*→ allowecs:*→ deny
Al ejecutar aliyun ecs DescribeInstances, se cumple la primera regla allow y la operación continúa con normalidad. Al ejecutar aliyun ecs DeleteInstance, se cumple la segunda regla y la operación se bloquea.
El orden de las reglas es importante. Al agregar reglas, asegúrese de que las más específicas aparezcan antes que las más generales.
Modo no interactivo y escenarios con agentes de IA
El indicador --yes
Cuando especifica el indicador --yes (o -y), las reglas confirm se omiten automáticamente (se consideran aprobadas). Las reglas deny no se ven afectadas y siguen bloqueando la ejecución.
# confirm rules are skipped, operation executes directly
aliyun ecs update-instance --InstanceId i-bp1xxxxx --yes
# deny rules are not affected, operation is still blocked
aliyun ecs delete-instance --InstanceId i-bp1xxxxx --yes
# Output: ERROR: operation blocked by safety policy: ecs delete-instance (rule: *:Delete*)
También puede establecer la variable de entorno ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM en true para aprobar automáticamente todas las reglas confirm durante toda una sesión. Esto equivale a pasar --yes en cada comando:
export ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM=true
Ni --yes ni ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM pueden evadir las reglas deny. Las operaciones que coinciden con una regla deny siempre se bloquean, independientemente de los indicadores o variables de entorno.
Comportamiento en terminales no interactivas
La CLI detecta si la entrada estándar es un dispositivo de terminal para determinar el entorno actual. En entornos no interactivos (como scripts, canalizaciones de CI/CD y tiempos de ejecución de agentes de IA), si una operación coincide con una regla confirm y no se especifica el indicador --yes, la CLI devuelve el siguiente error:
Safety policy requires confirmation for: ecs update-instance
This operation cannot run in non-interactive mode without explicit approval. If you are an agent, ask the user whether this operation is allowed; after they confirm (e.g. reply yes), re-run the same command with --yes.
Flujo de trabajo recomendado para agentes de IA
Cuando un agente de IA gestiona recursos en la nube a través de la CLI, siga estos pasos para configurar y utilizar las directivas de seguridad:
Configurar directivas de seguridad: Establezca
denypara las operaciones que deban prohibirse por completo, yconfirmpara las operaciones que requieran aprobación.Gestionar solicitudes de confirmación: Cuando el agente encuentre un bloqueo
confirm, presente los detalles de la operación al usuario y solicite su aprobación.Volver a ejecutar con aprobación: Una vez que el usuario confirme, el agente vuelve a ejecutar el comando con el indicador
--yes.
Ejemplo de configuración: Bloquear operaciones de eliminación y requerir confirmación humana para operaciones de actualización:
aliyun configure safety-policy enable
aliyun configure safety-policy add --pattern '*:Delete*' --action deny
aliyun configure safety-policy add --pattern '*:Update*' --action confirm
Variables de entorno
Además de la configuración mediante línea de comandos, puede controlar las directivas de seguridad a través de variables de entorno. Estas tienen prioridad sobre el archivo de configuración.
|
Variable de entorno |
Descripción |
Ejemplo |
|
|
Reemplaza el valor |
|
|
|
Reemplaza la lista de reglas del archivo de configuración. Utilice el formato |
|
|
|
Establézcala en |
|
Cuando se establece la variable de entorno ALIBABA_CLOUD_SAFETY_POLICY_RULES, las reglas del archivo de configuración se sustituyen por completo, no se combinan.
Archivo de configuración
La configuración de la directiva de seguridad se almacena en ~/.aliyun/safety-policy.json. Si especifica la opción --config-path, el archivo safety-policy.json se ubicará en ese directorio personalizado.
Ejemplo de formato de archivo:
{
"enabled": true,
"rules": [
{
"pattern": "ecs:Describe*",
"action": "allow"
},
{
"pattern": "*:Delete*",
"action": "deny"
},
{
"pattern": "ecs:Update*",
"action": "confirm"
}
]
}
Si el archivo de configuración no existe, la directiva de seguridad se deshabilita de forma predeterminada y la lista de reglas queda vacía. El archivo se crea automáticamente cuando ejecuta por primera vez el subcomando
enableoadd.
La directiva de seguridad utiliza un diseño de fallo abierto: si el archivo de configuración no se puede cargar (por ejemplo, debido a daños en el archivo), la CLI omite las comprobaciones de seguridad y no bloquea la ejecución de comandos.