Todos os produtos
Search
Central de documentação

Platform For AI:Configure a RAM role for a DSW instance

Última atualização: Jun 27, 2026

Associar uma função do RAM a uma instância DSW permite que a instância utilize credenciais STS temporárias da função para acessar outros recursos de nuvem. Isso elimina a necessidade de configurar AccessKeys de longo prazo e reduz o risco de vazamento de credenciais.

O que é uma função do RAM de instância

Uma função do RAM de instância fornece uma identidade temporária baseada em funções para uma instância DSW. Quando uma instância DSW recebe uma função do RAM:

  • Os processos dentro da instância obtêm automaticamente credenciais STS de curto prazo do serviço de metadados local ou de um arquivo de credenciais.

  • As credenciais concedem permissões definidas pela política de permissões anexada, permitindo acesso seguro a serviços de nuvem autorizados, como OSS, MaxCompute e PAI-DLC.

  • Essa abordagem evita completamente o armazenamento de AccessKey em texto simples no código ou nos arquivos de configuração, ajudando você a atender aos requisitos de segurança e conformidade.

Os principais benefícios incluem:

  • Segurança: Utiliza credenciais STS de curto prazo atualizadas automaticamente em vez de AccessKeys de longo prazo, eliminando os riscos de chaves codificadas e vazamento de credenciais.

  • Facilidade de gerenciamento: Centraliza o gerenciamento de permissões por meio de políticas de função do RAM. As alterações na política entram em vigor imediatamente, sem reiniciar instâncias ou atualizar o código.

  • Confiança nativa: O Alibaba Cloud Security Token Service (STS) emite as credenciais, tornando-as confiáveis por padrão, sem exigir middleware de autenticação adicional.

Limitações

É possível associar apenas uma função do RAM a uma instância DSW por vez.

Procedimento

Etapa 1: Configurar uma função do RAM

Na página de configuração da instância DSW, escolha uma das três opções de função a seguir:

PAI default role

O Platform for AI (PAI) fornece uma função padrão. Após conceder essa função a uma instância, ela obtém automaticamente acesso aos seguintes recursos sem um AccessKey configurado:

  • Envie jobs para projetos do MaxCompute onde o proprietário da instância tenha permissões de execução usando o ODPS SDK.

  • Acesse dados no bucket do caminho de armazenamento padrão configurado para o workspace atual usando o OSS SDK.

  • Utilize o serviço Tongyi Lingma no WebIDE.

  • Crie e envie jobs de treinamento para o workspace atual usando o PAI ou o PAI-DLC SDK.

Custom role

  1. Faça login no RAM console e crie uma função do RAM. Para obter instruções detalhadas, consulte Criar uma função do RAM para um serviço confiável do Alibaba Cloud.

    Configure os parâmetros principais da seguinte forma:

    • Trusted entity type: Alibaba Cloud service

    • Trusted entity name: Platform for AI (pai.aliyun.cs.com)

  2. Conceda permissões à função do RAM.

    Clique em Add Authorization e anexe uma política de permissões do sistema ou personalizada à função do RAM. Isso concede à função permissões para acessar ou operar os recursos necessários. Por exemplo, adicione a política AliyunOSSFullAccess. Para mais informações, consulte Etapa 3: Conceder permissões a uma função do RAM.

    Nota

    Se você estiver usando um usuário do RAM para operar a instância DSW, solicite ao administrador da conta raiz que crie e anexe a seguinte política de permissões ao seu usuário do RAM. Essa política permite que seu usuário do RAM utilize a função do RAM da instância.

    O código a seguir mostra a política de permissões necessária. Substitua ${RoleName} pelo nome da função do RAM da instância DSW.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram::*:role/${RoleName}"
        }
      ]
    }

No associated role

Se sua instância estiver visível publicamente no workspace, recomendamos não associar uma função do RAM a ela para evitar exposição de permissões. Ao criar uma instância ou alterar sua configuração, na seção Advanced Information, defina Instance RAM Role como Does Not Associate Role.

Atualizar a configuração da função do RAM

  1. Acesse a página do DSW.

    1. Faça login no PAI console e selecione sua região e workspace de destino.

    2. No painel de navegação à esquerda, escolha Model Training > Data Science Workshop (DSW) para acessar a página do DSW.

  2. Clique em Change Settings à direita da instância DSW.

  3. Na seção Roles and Permissions, configure a função do RAM da instância.

    Importante

    Se você alternar a função do RAM de uma instância em execução de Default Roles of PAI ou Custom Roles para Does Not Associate Role, ou de Does Not Associate Role para Default Roles of PAI ou Custom Roles, a instância será reiniciada imediatamente. Certifique-se de ter salvo a instância.

  4. Após concluir a configuração, clique em OK.

Etapa 2: Obter credenciais temporárias

Após associar uma função do RAM a uma instância, obtenha e utilize suas credenciais temporárias de várias maneiras para acessar serviços de nuvem.

Credentials tool

Recomendamos usar a ferramenta Credentials dos SDKs do Alibaba Cloud. Ela lida automaticamente com a aquisição e atualização de credenciais, sendo a melhor prática para acessar serviços de nuvem.

  1. Instale a dependência (exemplo em Python):

    pip install alibabacloud_credentials
  2. Exemplo de uso:

    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 access methods in the default credential chain, you do not need to explicitly specify the type. The Credentials SDK obtains temporary credentials by using the URI method.
    )
    credentialsClient = CredClient(credentialsConfig)

Para mais exemplos de SDK em outras linguagens, consulte Melhores práticas para usar credenciais para acessar a OpenAPI do Alibaba Cloud.

Local service

Na instância DSW, execute o seguinte comando no terminal para obter credenciais do serviço injetado localmente.

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

A seguir está um exemplo de resposta:

  • SecurityToken: O token temporário para a função do RAM da instância.

  • Expiration: O tempo de expiração das credenciais de acesso temporárias.

{
    "Code": "Success",
    "AccessKeyId": "STS.N*********7",
    "AccessKeySecret": "3***************d",
    "SecurityToken": "DFE32G*******",
    "Expiration": "2024-05-21T10:39:29Z"
}

Local file

Em uma instância DSW, o PAI injeta automaticamente e atualiza periodicamente um arquivo contendo credenciais temporárias para a função do RAM da instância. Você pode obter essas credenciais lendo o arquivo no caminho /mnt/.alibabacloud/credentials. O conteúdo do arquivo é o seguinte:

{
    "AccessKeyId": "STS.N*********7",
    "AccessKeySecret": "3***************d",
    "SecurityToken": "DFE32G*******",
    "Expiration": "2024-05-21T10:39:29Z"
}

Etapa 3: Acessar outros serviços de nuvem

Access OSS

  1. Execute os seguintes comandos para instalar a ferramenta Credentials e o OSS SDK:

    # Install the credentials tool
    pip install alibabacloud_credentials
    # Install the OSS SDK
    pip install oss2
  2. Use as credenciais temporárias da função do RAM da instância para acessar o OSS e listar 10 objetos em um bucket especificado. Para endpoints de região do OSS, consulte Regiões e endpoints.

    import oss2
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials import providers
    from itertools import islice
    auth = oss2.ProviderAuth(providers.DefaultCredentialsProvider())
    bucket = oss2.Bucket(auth, 
                         '<oss_endpoint>',# Replace  with the endpoint of the region where your OSS bucket is located.
                         '<oss_bucket>'# Replace  with your OSS bucket name.
                        )
    for b in islice(oss2.ObjectIterator(bucket), 10):
        print(b.key)

Access MaxCompute

  1. Execute os seguintes comandos para instalar a ferramenta Credentials e o ODPS SDK:

    # Install the credentials tool
    pip install alibabacloud_credentials
    # Install the ODPS SDK
    pip install odps
  2. Utilize as credenciais temporárias da função do RAM da instância para acessar o MaxCompute e recuperar a lista de tabelas em um projeto especificado. Para endpoints de região do MaxCompute, consulte Endpoints.

    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)

Access PAI-DLC

  1. Execute os seguintes comandos para instalar a ferramenta Credentials, o OpenAPI SDK e o PAI-DLC SDK:

    # Install the credentials tool
    pip install alibabacloud_credentials
    # Install the Alibaba Cloud OpenAPI SDK
    pip install alibabacloud-tea-util alibabacloud_tea_openapi
    # Install the PAI-DLC SDK
    pip install alibabacloud_pai_dlc20201203
  2. Use as credenciais temporárias da função do RAM da instância para acessar o PAI-DLC e listar os jobs do PAI-DLC em um workspace especificado.

    from alibabacloud_credentials.client import Client as CredClient
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_pai_dlc20201203.client import Client as pai_dlc20201203Client
    from alibabacloud_pai_dlc20201203 import models as pai_dlc_20201203_models
    from alibabacloud_tea_util.models import RuntimeOptions
    # Use the Credentials tool to initialize the PAI-DLC client.
    credentialsClient = CredClient()
    config = Config(credential=credentialsClient)
    config.endpoint = '<dlc_endpoint>' # Replace  with the endpoint of your region.
    client = pai_dlc20201203Client(config)
    # Initialize the request and call the ListJobs API.
    list_jobs_request = pai_dlc_20201203_models.ListJobsRequest()
    list_jobs_request.workspace_id = '<workspace_id>' # Replace  with your workspace ID.
    runtime_options = RuntimeOptions()
    headers = {}
    resp = client.list_jobs_with_options(list_jobs_request, headers, runtime_options)
    jobs = resp.to_map()['body']['Jobs']
    print(jobs[0])

Perguntas frequentes

Resolver PassRoleFailedError

Faça login no RAM console para verificar se a função existe.

  • Caso a função não exista, altere a função do RAM da instância para uma função existente.

  • Se a função existir, solicite ao administrador da conta raiz que conceda ao seu usuário do RAM permissão para usar essa função. A política de permissões necessária é a seguinte (substitua ${RoleName} pelo nome da função do RAM):

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram::*:role/${RoleName}"
        }
      ]
    }

Resolver AssumeRoleFailedError

Esse erro geralmente ocorre porque a política de confiança da sua função está configurada incorretamente. Siga estas etapas para resolver o problema:

  1. Faça login no RAM console como administrador do RAM.

  2. No painel de navegação à esquerda, escolha Identity Management > Roles.

  3. Na página Roles, clique em nome da função do RAM de destino.

  4. Na aba Trust Policy, clique em Edit Trust Policy.

  5. Modifique a política de confiança para adicionar pai.aliyuncs.com ao principal Service e clique em OK.

    Por exemplo, se a política de confiança original for:

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "RAM": [
              "acs:ram::aaa:root"
            ],
            "Service": [
              "xxx.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }

    Atualize a política para incluir pai.aliyuncs.com:

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "RAM": [
              "acs:ram::aaa:root"
            ],
            "Service": [
              "xxx.aliyuncs.com",
              "pai.aliyuncs.com" 
            ]
          }
        }
      ],
      "Version": "1"
    }