Todos los productos
Search
Centro de documentos

Alibaba Cloud SDK:Best practices for accessing Alibaba Cloud OpenAPI

Última actualización: Sep 29, 2026

Las credenciales de acceso filtradas pueden comprometer los recursos en la nube y las operaciones del negocio. Proteja sus credenciales; para ello, elija el método de autenticación adecuado según cada escenario de despliegue.

¿Qué es una credencial de acceso?

Una credencial de acceso verifica su identidad cuando utiliza herramientas de desarrollo (API, CLI, SDK o Terraform) para acceder a Alibaba Cloud.

  • Par AccessKey: se compone de un AccessKey ID y un AccessKey secret. Es una credencial permanente para cuentas de Alibaba Cloud y usuarios de RAM. Create an AccessKey pair.

  • Token de STS: un token de Security Token Service (STS) es una credencial temporal que se emite para un rol de RAM con un periodo de validez y un alcance de permisos personalizados. What is STS?.

Causas comunes de filtración de credenciales

  • Los pares AccessKey codificados directamente en el código de la aplicación quedan expuestos a cualquier persona con acceso de lectura al repositorio. Además, se vuelven públicos si el código se envía a comunidades de código abierto o servicios de hosting.

  • Los pares AccessKey integrados en el código del lado del cliente se pueden extraer mediante la descompilación de la aplicación.

  • La documentación técnica o los materiales compartidos contienen información del par AccessKey.

  • El código de ejemplo de la documentación del producto contiene información del par AccessKey.

  • Las respuestas de API sin controles de permiso adecuados devuelven información de credenciales de acceso.

Métodos seguros para usar credenciales de acceso

Minimice el tiempo de exposición y el alcance de las credenciales. Elija un método seguro según su escenario de despliegue.

Método

Escenario

Use RAM Roles for Service Accounts (RRSA)

Aplicaciones desplegadas en un clúster de ACK. RRSA aísla los permisos a nivel de rol de RAM, por lo que cada aplicación asume un rol único.

Use an instance RAM role

Aplicaciones desplegadas en una instancia de ECS. La instancia asume un rol de RAM para acceder a Alibaba Cloud OpenAPI.

Use an STS token for development and debugging

Personal de desarrollo, operaciones y producto que requiere credenciales para tareas de operación y mantenimiento, gestión o depuración. Utilice SSO basado en roles para asumir un rol de RAM y obtener un token de STS.

Use an STS token in Function Compute

Aplicaciones desplegadas en Function Compute (FC) que necesitan acceder a otros recursos en la nube. Asocie la función de FC con un rol de RAM para usar un token de STS en lugar de credenciales permanentes.

Configure system environment variables

Escenarios donde las soluciones anteriores no aplican. Almacene las credenciales en variables de entorno del sistema.

Uso de RAM Roles for Service Accounts (RRSA)

Requisitos previos

  • Este método aplica a cloud services that support RAM.

  • Versión del clúster: Kubernetes 1.22 o posterior, en un clúster administrado de ACK (Basic o Pro), un clúster serverless de ACK (Basic o Pro) o un clúster ACK Edge (solo Pro).

  • Se usa Alibaba Cloud SDK V2.0.

  • No se pueden usar SDK personalizados para productos de puerta de enlace autogestionados.

Cómo funciona

3

Cómo funciona RRSA

Sin RRSA, cualquier pod de un nodo puede leer las credenciales del rol de la instancia de ECS a través de los metadatos de la instancia. De este modo, hereda todos los permisos otorgados a ese rol. Para restringir los permisos de RAM por aplicación, impida que las aplicaciones obtengan las credenciales temporales del rol de instancia mediante los metadatos de la instancia de ECS o ECI. Otra opción es no adjuntar ninguna política de permisos de RAM al rol de la instancia.

RRSA resuelve esto al vincular un rol de RAM con una cuenta de servicio de Kubernetes. Cuando un pod se inicia, recibe un token de OIDC con alcance limitado a su cuenta de servicio. Después, llama a la API AssumeRoleWithOIDC y recibe un token de STS con alcance de rol para acceder a las API de la nube.

El flujo de autenticación es el siguiente:

  1. Inyección del token: cuando un pod se inicia, ACK utiliza la proyección de volumen del token de la cuenta de servicio para montar un archivo de token de OIDC con alcance limitado a la cuenta de servicio del pod.

  2. Asunción del rol: la aplicación llama a la API AssumeRoleWithOIDC con este token de OIDC.

  3. Recepción de credenciales de STS: STS valida el token de OIDC con el proveedor de OIDC registrado y devuelve credenciales con alcance limitado al rol de RAM.

  4. Acceso a recursos: el pod usa las credenciales de STS de corta duración para acceder a las API autorizadas de Alibaba Cloud.

Los tokens de OIDC tienen una duración breve. Lea el token del archivo en cada solicitud de autenticación y no lo almacene en caché. ACK renueva los tokens automáticamente antes de que caduquen.

Cuando se habilita RRSA, ACK realiza automáticamente las siguientes acciones:

  • Crea un emisor de OIDC exclusivo para el clúster.

  • Actualiza la configuración service-account-issuer del clúster e integra el nuevo emisor de OIDC en el valor existente.

  • Crea un proveedor de identidades (IdP) de OIDC en su cuenta con el nombre ack-rrsa-<cluster_id>. Este proveedor se configura para el inicio de sesión único (SSO) con el emisor de OIDC del clúster.

Procedimiento

Ejemplos de código

Alibaba Cloud SDK V2.0 admite la autenticación con tokens de OIDC de RRSA. Cualquier SDK de servicio en la nube basado en V2.0 que admita tokens de STS también es compatible con RRSA.

Language

Version

Demo

Go

Alibaba Cloud Credentials for Go 1.2.6 o posterior. Para consultar las instrucciones, consulte Method 6: Use OIDCRoleArn.

Go SDK demo

Java

Alibaba Cloud Credentials for Java 0.2.10 o posterior. Para consultar las instrucciones, consulte Method 6: OIDC role ARN.

Java SDK demo

Python 3

Alibaba Cloud Credentials for Python 0.3.1 o posterior. Para consultar las instrucciones, consulte Manage access credentials.

Python SDK demo

Node.js / TypeScript

Alibaba Cloud Credentials for TypeScript/Node.js 2.2.6 o posterior. Para consultar las instrucciones, consulte Method 6: Use OIDCRoleArn.

Node.js SDK demo

Uso de un rol de RAM de instancia

Requisitos previos

  • Este método aplica a cloud services that support RAM.

  • Se usa Alibaba Cloud SDK V2.0.

  • No se pueden usar SDK personalizados para productos de puerta de enlace autogestionados.

Cómo funciona

Puede adjuntar un rol de Resource Access Management (RAM) de instancia a una instancia de Elastic Compute Service (ECS). Después, la instancia de ECS usa la credencial temporal de Security Token Service (STS) del rol de RAM de instancia para acceder a las API de otros servicios de Alibaba Cloud. La credencial temporal de STS se actualiza de forma periódica. Esto garantiza la seguridad de su par AccessKey e implementa un control de acceso detallado y una gestión de permisos mediante RAM.

1

Flujo de trabajo:

  1. La aplicación obtiene un token de STS al acceder a instance metadata de ECS.

  2. La aplicación usa el token de STS para acceder a los recursos en la nube. What is STS?.

Procedimiento

Asigne un rol de RAM a una instancia de ECS. Instance RAM roles.

Ejemplos de código

Alibaba Cloud Credentials simplifica el uso del rol de RAM de instancia. Estos ejemplos llaman a la operación DescribeRegions de ECS con un rol de RAM de instancia.

Lenguaje de programación

Ejemplo de código

Go

Go code example

Java

Java code example

Python

Python code example

PHP

PHP code example

Node.js

Node.js code example

.NET

.NET code example

Asunción de roles encadenada entre cuentas

Si su aplicación en una instancia de ECS necesita acceder a recursos de otra cuenta de Alibaba Cloud, utilice la asunción de roles encadenada entre cuentas. Así obtendrá acceso sin almacenar un par AccessKey.

Cómo funciona

La instancia de ECS primero obtiene credenciales temporales para su propio rol de RAM de instancia desde los metadatos de la instancia. Luego, usa estas credenciales para llamar a sts:AssumeRole y asumir un rol de RAM en la cuenta de destino. Con esto obtiene un token de STS para dicha cuenta. Este proceso se conoce como asunción de roles encadenada.

Procedimiento

  1. En la cuenta de destino, cree un rol de RAM. Establezca Principal.RAM en la política de confianza del rol con el Alibaba Cloud Resource Name (ARN) del rol de RAM de instancia en la cuenta de origen. Por ejemplo, acs:ram::<source-account-id>:role/<instance-role-name>. Otorgue a este rol los permisos que requiere la aplicación.

  2. Adjunte una política de permisos al rol de RAM de instancia en la cuenta de origen que conceda el permiso sts:AssumeRole. Puede utilizar la política del sistema AliyunSTSAssumeRoleAccess.

  3. En la instancia de ECS, use la herramienta Alibaba Cloud Credentials para ejecutar la asunción de roles encadenada. La herramienta primero obtiene las credenciales temporales del rol de RAM de instancia desde los metadatos de la instancia. Después, usa estas credenciales para llamar a sts:AssumeRole, asumir el rol de RAM en la cuenta de destino y obtener un token de STS entre cuentas.

Token de STS para desarrollo y depuración

Escenario

El personal de desarrollo, operaciones y producto requiere credenciales para tareas de operación y mantenimiento, gestión o depuración. En estos casos, utilice SSO basado en roles para asumir un rol de RAM y obtener un token de STS en lugar de un par AccessKey permanente.

Procedimiento

Uso de un token de STS en Function Compute

Escenario

En lugar de codificar directamente el par AccessKey de un usuario de RAM en una función de FC, asocie la función con un rol de RAM. La aplicación usará un token de STS para acceder a los recursos en la nube y evitará la filtración de credenciales permanentes.

Arquitectura de la solución

Los roles de función de FC gestionan las credenciales temporales durante la ejecución. Esto evita la exposición prolongada del par AccessKey. Configure el rol y los permisos una sola vez; las funciones obtendrán las credenciales temporales automáticamente.

Un administrador crea un rol de confianza para Function Compute y le otorga los permisos obligatorios (1); luego, asocia el rol con la función de FC (2). La aplicación recupera un token de STS desde el contexto de la función (3). Durante este proceso, Function Compute llama a AssumeRole para obtener el token de STS desde RAM/STS (i). La aplicación usa el token de STS para llamar a la API del recurso en la nube de destino (4), y la API del recurso devuelve el resultado a la aplicación cliente.

image

Procedimiento

Grant Function Compute permissions to access other Alibaba Cloud services.

Configuración de variables de entorno del sistema

Procedimiento

Configure las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET.

<ACCESS_KEY_ID>

Ejemplos de código de Alibaba Cloud SDK

Los SDK de Alibaba Cloud crean una credencial predeterminada a partir de las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET. Luego, la usan para autenticar solicitudes automáticamente. Estos ejemplos llaman a la operación DescribeRegions de ECS.

Lenguaje de programación

Ejemplo de código

Go

Go code example

Java

Java code example

Python

Python code example

PHP

PHP code example

Node.js

Node.js code example

.NET

.NET code example

Ejemplo de código genérico

Si no puede usar los SDK de Alibaba Cloud (por ejemplo, con SDK personalizados para productos de puerta de enlace autogestionados), cargue las variables de entorno directamente. Ejemplo en Java:

import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class DemoTest {
    public static void main(String[] args) throws Exception{
        Config config = new Config();
        // Specify the type of credential you want to use.
        config.setType("access_key");
        // The AccessKeyId of your RAM user.
        config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        // The AccessKeySecret of your RAM user.
        config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        Client client = new Client(config);
    }
}

Corrección de credenciales filtradas

Referencias

Mejores prácticas relacionadas con la seguridad en la nube: