RocketMQ阿里云跨账户授权访问示例

简介: 使用企业A的阿里云账号(主账号)创建RAM角色并为该角色授权,并将该角色赋予企业B,即可实现使用企业B的RAM用户(子账号)访问企业A的阿里云资源的目的。本文主要演示相关策略的配置以及Code实现。

Step By Step

主要操作步骤

1、主账户A创建角色并进行相关授权;
2、主账户B下面创建子账户B1;
3、主账户B为子账户B1授权可以扮演角色;
4、子账户B1创建AccessKey&AccessSecret;
5、代码实现B1认证信息订阅主账户A下面的RocketMQ。

一、主账户A创建角色并进行相关授权

1、登陆主账户ARAM控制台创建角色
图片.png

2、按需输入必要信息
图片.png

图片.png

3、为角色授权
图片.png

图片.png

4、必要认证参数获取
图片.png

二、主账户B下面创建子账户B1

1、登陆主账户B RAM控制台下面创建子账户
图片.png

三、主账户B为子账户B1授权可以扮演角色

图片.png

四、子账户B1创建AccessKey&AccessSecret

图片.png

五、代码实现B1认证信息订阅主账户A下面的RocketMQ

1、pom.xml

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.aliyun.openservices/ons-client -->
        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>ons-client</artifactId>
            <version>1.8.6.Final</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-sts</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.4.6</version>
        </dependency>
    </dependencies>

2、Code Sample

import com.aliyun.openservices.ons.api.Action;
import com.aliyun.openservices.ons.api.ConsumeContext;
import com.aliyun.openservices.ons.api.Consumer;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
import com.aliyun.openservices.ons.api.ONSFactory;
import com.aliyun.openservices.ons.api.PropertyKeyConst;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
import java.util.Properties;

public class ConsumerTest {
    public static void main(String[] args) throws ClientException {
        Properties properties = new Properties();
        // 您在控制台创建的Group ID。
        properties.put(PropertyKeyConst.GROUP_ID, "GID_******");
        
        //子账户B1的AccessKey&AccessSecret
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI4G26Yrjp5QjF********", "mHlYOVU6lhnFt6****************");
        IAcsClient client = new DefaultAcsClient(profile);

        // 构造请求,设置参数。
        AssumeRoleRequest request = new AssumeRoleRequest();
        request.setRoleArn("acs:ram::*********:role/taro-submq"); // ARN
        request.setRoleSessionName("taro-submq");  // RAM 角色名称
        request.setDurationSeconds(3600L); //过期时间,单位为秒,过期时间最小值为900秒,最大值为MaxSessionDuration设置的时间。默认值为3600秒。
        AssumeRoleResponse response;
        //发起请求,并得到响应
        response = client.getAcsResponse(request);

        // 从sts 请求response反馈结果获取认证信息
        properties.put(PropertyKeyConst.AccessKey, response.getCredentials().getAccessKeyId());
        properties.put(PropertyKeyConst.SecretKey, response.getCredentials().getAccessKeySecret());
        properties.put(PropertyKeyConst.SecurityToken, response.getCredentials().getSecurityToken());

        // 主账户A RocketMQ控制台获取:设置TCP接入域名,进入控制台的实例详情页面的TCP协议客户端接入点区域查看。
        properties.put(PropertyKeyConst.NAMESRV_ADDR, "http://MQ_INST_*********.mq-internet-access.mq-internet.aliyuncs.com:80");

        Consumer consumer = ONSFactory.createConsumer(properties);
        consumer.subscribe("******", "*", new MessageListener() { //订阅多个Tag。
            public Action consume(Message message, ConsumeContext context) {
                System.out.println("Receive: " + message);
                return Action.CommitMessage;
            }
        });
        consumer.start();
        System.out.println("Consumer Started");
    }
}            

3、测试效果
图片.png

图片.png

参考链接

通过RAM角色实现跨云账号授权
阿里云基于STS获取临时访问权限使用示例

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
存储 弹性计算 大数据
阿里云服务器怎么样?全访问解析云服务器ECS功能、租用、优缺点及使用说明
阿里云ECS是弹性计算服务,提供安全可靠的云服务器,包括多种实例规格如经济型、通用型、计算型等,适合不同场景。ECS支持VPC专有网络、快照与镜像、多种付费模式。用户可根据业务需求选择实例、存储类型和网络配置。阿里云服务器适用于Web应用、游戏、大数据和深度学习等场景,提供免费试用和不同优惠套餐。众多知名企业如新浪微博等信赖阿里云服务。更多信息可访问阿里云官方网站。
121 5
|
2月前
|
消息中间件 安全 API
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
245 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
|
1天前
|
运维 Java Devops
阿里云云效操作报错合集之访问知识库时出现访问异常,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
20天前
|
弹性计算 运维 安全
云服务器 ECS产品使用问题之如何将别人得帕鲁阿里云存档转移到自己得阿里云账户上
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
21天前
|
关系型数据库 Serverless 数据库
函数计算产品使用问题之如何访问阿里云的RDS
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5天前
|
NoSQL MongoDB
阿里云 MongoDB 创建库添加用户并授权
阿里云 MongoDB 创建库添加用户并授权
11 0
|
21天前
|
弹性计算
阿里云账号注册流程图文详解、账户实名认证和申请免费服务器全流程
阿里云账号注册支持手机号、支付宝等验证方式。使用手机号需手动验证,而支付宝等可自动完成实名认证。注册后须进行个人或企业实名认证才能正常使用服务。个人认证推荐使用支付宝快速完成;企业认证也支持支付宝法人扫描完成。完成认证后,可在免费中心申请最长达3个月的免费服务器试用,或选择付费方案获得更多资源。
|
1月前
|
敏捷开发 网络安全 持续交付
阿里云云效产品使用合集之ACK集群中的Pod需要访问公网,该如何实现
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
缓存 安全 API
阿里云云效产品使用合集之在外面出差需要访问被设置为内网或IP白名单限制的代码库,该如何操作
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
数据采集 敏捷开发 数据挖掘
阿里云云效产品使用合集之需要外出差的人员访问代码库,可以通过什么方式进行访问
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。