Todos los productos
Search
Centro de documentos

DataWorks:Configure un rol de RAM para un entorno de desarrollo individual

Última actualización: Sep 04, 2026

Al asociar un rol de RAM de instancia con su instancia, puede usar una credencial temporal de STS para acceder a otros recursos en la nube en lugar de utilizar una accesskey de largo plazo. Esto reduce el riesgo de fuga de credenciales y mejora la seguridad. Este tema describe cómo obtener una credencial temporal de STS mediante un rol de RAM de instancia.

Contexto

Un rol de RAM de instancia es un rol de RAM cuya entidad de confianza es un servicio de Alibaba Cloud. Esto permite que el servicio en la nube asuma el rol para lograr un acceso seguro entre servicios. Para obtener más información sobre los roles de RAM, consulte What is a RAM role?.

El uso de un rol de RAM de instancia para obtener una credencial de acceso temporal destinada a la autenticación y al control de acceso ofrece una ventaja clave:

  • Mayor seguridad

    No es necesario gestionar credenciales dentro de la instancia. El uso de una credencial temporal de STS en lugar de una accesskey de largo plazo reduce el riesgo de fuga de credenciales.

Límites

Solo se puede asociar un rol de RAM con una instancia de entorno de desarrollo individual.

Paso 1: Configure el rol de RAM

Escenario 1: Asociar el rol predeterminado de DataWorks

Cuando utiliza Notebook o Python para el desarrollo, puede acceder a algunos productos en la nube sin proporcionar un AccessKey ID ni un AccessKey Secret.

El rol predeterminado de DataWorks otorga permisos de acceso únicamente a MaxCompute, Hologres, EMR Serverless Spark, Realtime Compute for Apache Flink y Platform for AI (PAI). Cuando utiliza una credencial de acceso temporal emitida por este rol para acceder a dichos servicios, cuenta con los mismos permisos que el propietario del entorno de desarrollo individual.

Asociar el rol predeterminado de DataWorks con su instancia proporciona una credencial de acceso temporal que permite el uso de recursos básicos de desarrollo sin escalada de privilegios, lo cual elimina la necesidad de crear un rol de RAM personalizado.

Después de asociar el rol predeterminado de DataWorks, no necesita configurar una accesskey en los siguientes escenarios:

  • Acceder a MaxCompute, Hologres, EMR Serverless Spark, Realtime Compute for Apache Flink o Platform for AI (PAI) mediante una celda SQL de Notebook.

  • Enviar tareas a un proyecto de MaxCompute donde el propietario de la instancia tenga permisos de ejecución mediante el SDK de ODPS.

En la sección Advanced Information, localice la configuración Instance RAM role y seleccione DataWorks default role.

Escenario 2: No asociar un rol de RAM

Si su instancia es visible públicamente en el espacio de trabajo, no asocie un rol de RAM con ella para evitar la fuga de permisos. Cuando cree o modifique una instancia, establezca la opción Instance RAM role en la sección Advanced Information como Do not associate role.

Si no hay ningún rol de RAM asociado, puede acceder a los productos en la nube si configura el AccessKey ID y el AccessKey Secret directamente en su código.

Paso 2: Obtener una credencial de acceso temporal

Una vez asociado un rol de RAM con una instancia de entorno de desarrollo individual, puede obtener una credencial de acceso temporal de alguna de las siguientes maneras.

Método 1: Usar la herramienta Credentials

La herramienta Credentials invoca un servicio local que se inyecta automáticamente en la instancia durante su creación. Este servicio obtiene una credencial temporal de STS y la rota automáticamente.

Para obtener la credencial del rol de RAM de instancia mediante la herramienta Credentials, ejecute el siguiente comando para instalar la herramienta. El siguiente ejemplo utiliza Python.

pip install alibabacloud_credentials

El siguiente código muestra un ejemplo de cómo usar la herramienta Credentials. Para consultar ejemplos del SDK en otros lenguajes, véase Best practices for using an access credential to call API operations.

from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_credentials.models import Config as CredConfig
credentialsConfig = CredConfig(
	type='credentials_uri'   # Optional. If you have not configured other providers in the default credential chain, you do not need to explicitly specify this parameter. The Credentials SDK automatically obtains a temporary credential by using the URI.
)
credentialsClient = CredClient(credentialsConfig)

Método 2: Consultar el endpoint del servicio local

Desde la terminal dentro de su instancia de entorno de desarrollo individual, puede ejecutar el siguiente comando para consultar directamente el servicio local inyectado y obtener las credenciales.

# Obtain the temporary access credential for the instance RAM role.
curl $ALIBABA_CLOUD_CREDENTIALS_URI

El siguiente código muestra una respuesta de ejemplo. Los parámetros se describen a continuación:

  • SecurityToken: El token temporal del rol de RAM de instancia.

  • Expiration: La fecha de caducidad de la credencial de acceso temporal.

{
	"Code": "Success",
	"AccessKeyId": "************",
	"AccessKeySecret": "************",
	"SecurityToken": "DFE32G*******",
	"Expiration": "2024-05-21T10:39:29Z"
}

Método 3: Leer el archivo de credenciales local

Puede acceder a un archivo en una ruta específica dentro de la instancia de entorno de desarrollo individual para obtener la credencial de acceso temporal del rol de RAM de instancia. El archivo se encuentra en /mnt/.alibabacloud/credentials y contiene el siguiente contenido:

{
	"AccessKeyId": "*********",
	"AccessKeySecret": "***************",
	"SecurityToken": "DFE32G*******",
	"Expiration": "2024-05-21T10:39:29Z"
}

Paso 3: Acceder a MaxCompute

  1. Ejecute los siguientes comandos para instalar la herramienta Credentials y el SDK de ODPS.

    # Install the Credentials tool.
    pip install alibabacloud_credentials
    # Install the ODPS SDK.
    pip install odps
  2. Utilice la credencial temporal del rol de RAM de instancia para acceder a ODPS y recuperar la lista de tablas en un proyecto especificado.

    from alibabacloud_credentials import providers
    from odps.accounts import CredentialProviderAccount
    from odps import ODPS
    if __name__ == '__main__':
        account = CredentialProviderAccount(providers.DefaultCredentialsProvider())
        o = ODPS(
                 account=account,
                 project="{odps_project}", # Replace with your project name.
                 endpoint="{odps_endpoint}"# Replace with the endpoint of the region where your project is located.
                )
        for t in o.list_tables():
            print(t)