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:
-
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.
-
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
-
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.
-
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.
-
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.
-
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.
-
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
AliyunSTSAssumeRoleAccessao 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.
ImportanteO 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
updateCredentialpara 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.
ImportanteO 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:
Em um navegador, abra a página de Logon de Usuário do RAM.
-
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.
NotaO 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. 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.
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.
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.