Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Delegar acesso entre contas com funções do RAM

Última atualização: Jul 20, 2026

Crie uma função do RAM na conta da Alibaba Cloud da Empresa A, conceda permissões a essa função e permita que a Empresa B a assuma. Dessa forma, a conta ou os usuários do RAM da Empresa B poderão acessar os recursos da Alibaba Cloud da Empresa A.

Contexto

A Empresa A utiliza o Message Queue for Apache RocketMQ e deseja delegar certas tarefas operacionais à Empresa B.

Requisitos:

  • A Empresa A quer manter a propriedade dos recursos, mas delegar tarefas baseadas no console, como consulta de recursos e monitoramento, à Empresa B.

  • A Empresa A não deseja gerenciar permissões quando funcionários da Empresa B forem contratados ou desligados. A Empresa B deve controlar quais de seus próprios usuários do RAM podem acessar os recursos da Empresa A e definir suas permissões específicas.

  • A Empresa A precisa ter a capacidade de revogar o acesso da Empresa B a qualquer momento, por exemplo, ao término do contrato.

Solução

Para atender a esses requisitos, a Empresa A concede permissões aos funcionários da Empresa B para acessar recursos do Message Queue for Apache RocketMQ. Considere que a Empresa A e a Empresa B possuem, cada uma, uma conta da Alibaba Cloud. Este guia descreve o procedimento para configurar o acesso entre contas:

  1. Step 1: Create and authorize a RAM role

    Na conta da Empresa A, crie uma função do RAM, anexe as políticas necessárias e configure uma política de confiança que permita aos usuários do RAM da conta da Empresa B assumir a função.

  2. Step 2: Access resources across accounts

    Após a configuração da função do RAM, os usuários do RAM na conta da Empresa B podem assumir a função para obter permissões temporárias. Em seguida, eles podem acessar os recursos na conta da Empresa A das seguintes maneiras:

    • Por meio de um SDK

    • Pelo console

    • Via chamadas de API

Etapa 1: Criar e autorizar uma função do RAM

  1. Com a conta da Alibaba Cloud da Empresa A, faça login no console do RAM e crie uma função do RAM para a Empresa B.

    Para mais informações, consulte Create a RAM role for a trusted Alibaba Cloud account.

  2. Opcional: Na conta da Empresa A, crie uma política personalizada para a função do RAM.

    Para mais informações, consulte Create a custom policy.

    Atualmente, o Message Queue for Apache RocketMQ oferece suporte a permissões nos níveis de instância, tópico e grupo. Para mais informações, consulte Custom policies for Message Queue for Apache RocketMQ.

  3. Por padrão, uma nova função do RAM não possui permissões. A Empresa A deve conceder permissões à função anexando uma política do sistema ou uma política personalizada.

    Para mais informações, consulte Grant permissions to a RAM user.

  4. Com a conta da Alibaba Cloud da Empresa B, faça login no console do RAM e crie um usuário do RAM.

    Para mais informações, consulte Create a RAM user.

  5. Na conta da Empresa B, conceda a permissão AliyunSTSAssumeRoleAccess ao usuário do RAM.

    Para mais informações, consulte Grant permissions to a RAM user.

    Conceda a permissão AliyunSTSAssumeRoleAccess ao usuário do RAM na conta da Empresa B para que ele possa assumir a função do RAM criada na conta da Empresa A.

Etapa 2: Acessar recursos entre contas

  • Acesso a recursos via SDK

    Os usuários do RAM na conta da Empresa B podem usar um SDK para acessar recursos do Message Queue for Apache RocketMQ na conta da Empresa A. Escolha um dos dois métodos de configuração abaixo:

    • Configurar um token STS: Este método exige o fornecimento do AccessKey ID, do AccessKey secret do usuário do RAM e de um token de segurança temporário do Security Token Service (STS). O token de segurança temporário expira e precisa ser renovado. Para mais informações sobre como obter um token de segurança temporário, consulte AssumeRole.

      Importante
      • O método de token STS é suportado apenas pelo SDK Java para Message Queue for Apache RocketMQ versão 1.7.8.Final e posteriores.

      • Para obter um AccessKey ID e um AccessKey secret, consulte Create an AccessKey pair.

      Exemplo: Configuração de token STS

      • Ao inicializar o cliente do Message Queue for Apache RocketMQ, especifique o AccessKey ID, o AccessKey secret e o token de segurança temporário obtidos nas seguintes propriedades:

        Properties properties = new Properties();
        // Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables are set.
        // The AccessKey ID obtained from STS.
        properties.put(PropertyKeyConst.AccessKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        // The AccessKey secret obtained from STS.
        properties.put(PropertyKeyConst.SecretKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // The temporary security token.
        properties.put(PropertyKeyConst.SecurityToken, System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN"));
        // Other properties.
        properties.put(PropertyKeyConst.NAMESRV_ADDR, "XXX");
        ......
        Producer client = ONSFactory.createProducer(properties);
        client.start();                    
      • Quando o token de segurança temporário expirar, chame o método updateCredential para atualizá-lo.

        Properties properties = new Properties();
        // Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables are set.
        // The AccessKey ID obtained from STS.
        properties.put(PropertyKeyConst.AccessKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        // The AccessKey secret obtained from STS.
        properties.put(PropertyKeyConst.SecretKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // The temporary security token.
        properties.put(PropertyKeyConst.SecurityToken, System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN"));
        client.updateCredential(properties);                    
    • Configurar uma função do RAM de instância ECS: Se sua aplicação for executada em uma instância do Elastic Compute Service (ECS), utilize este método para evitar a codificação fixa de credenciais no SDK. Forneça apenas o nome da função do RAM, mas antes anexe a função do RAM à instância ECS. Para mais informações, consulte Attach an instance RAM role.

      Importante

      O método de função do RAM de instância ECS é suportado apenas pelo SDK Java para Message Queue for Apache RocketMQ versão 1.8.7.3.Final e posteriores.

      Exemplo: Configuração de função do RAM de instância ECS

      Properties properties = new Properties();
      // The name of the RAM role that you created and attached to the ECS instance.
      properties.put(PropertyKeyConst.RAM_ROLE_NAME,"XXX");
  • Acesso a recursos pelo console

    Os usuários do RAM na conta da Empresa B podem seguir estas etapas para acessar os recursos do Message Queue for Apache RocketMQ da Empresa A pelo console:

    1. Em um navegador, abra a página de Logon de Usuário do RAM.

    2. Na página de RAM User Logon, insira o nome de logon do usuário do RAM, clique em Next, insira a senha e clique em Log On.

      Nota

      O nome de logon segue o formato <$username>@<$AccountAlias> ou <$username>@<$AccountAlias>.onaliyun.com. <$AccountAlias> é o alias da conta da Alibaba Cloud. Caso nenhum alias esteja definido, o ID da conta da Alibaba Cloud será usado por padrão.

    3. Após fazer login no console da Alibaba Cloud, passe o mouse sobre a foto de perfil no canto superior direito e clique em Switch Identity.

    4. Na página Switch Role, insira o Enterprise Alias, o Default Domain ou o Account UID da conta da Empresa A. Em seguida, insira o Role Name e clique em Submit.

    5. Agora você pode gerenciar os recursos do Message Queue for Apache RocketMQ na conta da Empresa A.

  • Acesso a recursos via chamadas de API

    Os usuários do RAM na conta da Empresa B podem acessar recursos na conta da Empresa A fazendo chamadas de API para o Message Queue for Apache RocketMQ. Para mais informações sobre como realizar chamadas de API, consulte Make API requests.

Mais informações