Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 2026

Crie uma função do Resource Access Management (RAM) na conta da Alibaba Cloud da Empresa A, conceda permissões a essa função e configure-a para que a conta da Alibaba Cloud da Empresa B ou os usuários do RAM da Empresa B possam assumi-la. Isso permite que os usuários da Empresa B acessem 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 no console, como consulta de recursos e monitoramento, à Empresa B.

  • A Empresa A deseja evitar o gerenciamento de permissões quando funcionários da Empresa B entram ou saem da organização. A Empresa B deve poder controlar quais de seus próprios usuários do RAM (funcionários ou aplicações) acessam os recursos da Empresa A e definir suas permissões específicas.

  • A Empresa A precisa revogar o acesso da Empresa B a qualquer momento, por exemplo, caso o contrato seja encerrado.

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 tópico descreve o procedimento para configurar o acesso entre contas:

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

    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 na conta da Empresa B assumir a função.

  2. Etapa 2: Acessar recursos entre contas

    Após configurar a 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 formas:

    • 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 RAM console e crie uma função do RAM para a conta da Alibaba Cloud da Empresa B.

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

    Para mais informações, consulte Criar uma política personalizada.

    Atualmente, o Message Queue for Apache RocketMQ oferece suporte a permissões nos níveis de instância, tópico e grupo. Para mais detalhes, consulte Políticas personalizadas para o 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 Conceder permissões a um usuário do RAM.

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

    Para mais informações, consulte Criar um usuário do RAM.

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

    Para mais informações, consulte Conceder permissões a um usuário do RAM.

    É necessário conceder a permissão AliyunSTSAssumeRoleAccess ao usuário do RAM na conta da Empresa B. Isso permite que esse usuário assuma 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 saber 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 Criar um par de AccessKey.

      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: Caso sua aplicação seja executada em uma instância do Elastic Compute Service (ECS), utilize este método. Ele evita a codificação fixa de credenciais no SDK, exigindo apenas o nome da função do RAM. No entanto, é preciso primeiro anexar essa função do RAM à instância ECS da aplicação. Para mais informações, consulte Anexar uma função do RAM de instância.

      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 RAM User Logon.

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

      Nota

      O nome de login segue o formato <$username>@<$AccountAlias> ou <$username>@<$AccountAlias>.onaliyun.com. O <$AccountAlias> corresponde ao alias da conta da Alibaba Cloud. Se nenhum alias estiver 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 detalhes sobre como fazer chamadas de API, consulte Fazer solicitações de API.

Mais informações