开发者社区> taro_秋刀鱼> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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获取临时访问权限使用示例

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云的快照功能使用
阿里云的快照功能使用
55 0
vue-addRoute-keepAlive
很多场景都是动态路由,那今天来梳理下动态路由
21 0
RocketMQ-幂等性
幂等性的具体方案需要以具体使用场景而定。
76 0
阿里云使用Docker
阿里云使用Docker部署MongoDB集群体验
139 0
春色满园关不住,带你体验阿里云 Knative
Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架。阿里云 Knative 在社区 Knative 基础之上,与阿里云产品进行了深度的融合,给你带来最纯粹的容器化 Serverless 体验。
304 0
春色满园关不住,带你体验阿里云 Knative
Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架。阿里云 Knative 在社区Knative基础之上,与阿里云产品进行了深度的融合,给你带来最纯粹的容器化 Serverless 体验。
866 0
rocketMq使用
windows下搭建rocketMQ,及java示例代码
601 0
阿里云AMQP PHP使用示例
本文主要介绍如何通过 PHP SDK 连接阿里云AMQP服务。
2080 0
使用ATL开发ActiveX控件
本文描述了使用ATL开发一个ActiveX控件的完整过程。 一、创建项目 单击起始页中的“New Project…”,选择“ATL”分类下的“ATL Project”项目,项目名称为“Calculator”。
1242 0
+关注
taro_秋刀鱼
博客园主页:https://home.cnblogs.com/u/taro/
248
文章
23
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载