开发者社区 问答 正文

如何借助 STS 实现跨账号访问日志资源资源?


您创建的 project、logstore、config、machinegroup,都是您自己拥有的资源。默认情况下,您对自己的资源拥有完整的操作权限,可以使用本文档中列举的所有 API 对资源进行操作。
如果需要授权其它云账号访问各类资源,需要通过 STS 获取临时 ak/token 调用具体操作。在阅读以下说明之前,请先阅读 STS产品文档
假设用户 A 在日志服务创建了 project 和 logstore 等各类资源,用户 B 希望调用 API 接口进行访问,需要按照如下步骤进行操作。

用户 A 操作



创建角色


用户 A 通过 访问控制服务控制台 或者 API 创建角色信任用户 B 云账号,创建的角色详情如下:




您创建的 project、logstore、config、machinegroup,都是您自己拥有的资源。默认情况下,您对自己的资源拥有完整的操作权限,可以使用本文档中列举的所有 API 对资源进行操作。
如果需要授权其它云账号访问各类资源,需要通过 STS 获取临时 ak/token 调用具体操作。在阅读以下说明之前,请先阅读 STS产品文档
假设用户 A 在日志服务创建了 project 和 logstore 等各类资源,用户 B 希望调用 API 接口进行访问,需要按照如下步骤进行操作。

用户 A 操作



创建角色


用户 A 通过 访问控制服务控制台 或者 API 创建角色信任用户 B 云账号,创建的角色详情如下:


资源(Resource)设置说明:

  • 以上两类资源都是授权指定用户的所有 project 和 logstore
  • 如果授权指定 project:acs:log::{projectOwnerAliUid}:project/
  • 如果授权指定 logstore:acs:log::{projectOwnerAliUid}:project/{projectName}/logstore/{logstoreName}/

完整的资源说明请参考 日志服务 RAM 资源

用户 B 操作



创建子账号并授权


登录访问控制服务控制台或者使用 API/SDK 创建子账号并且授予 AssumeRole 权限( 控制台操作示例)。

调用 STS 接口获取临时 ak/token


STS SDK 使用说明

调用日志服务接口


日志服务 SDk 使用说明

示例代码


样例代码以用户 B 通过 STS 向用户 A 的 project 写入数据为例(基于 JavaSDK)。
代码链接

展开
收起
轩墨 2017-10-23 16:21:30 2345 分享 版权
阿里云 AI 助理回答

在阿里云的场景中,用户A想要授权用户B访问其创建的日志服务(Log Service)资源,如project、logstore等,需要通过访问控制(Resource Access Management,RAM)和安全令牌服务(Security Token Service,STS)来实现跨账号的资源访问。以下是详细的步骤说明:

用户A操作:创建角色并设置权限

  1. 创建RAM角色

    • 登录阿里云控制台,进入访问控制服务(RAM)控制台
    • 选择“角色”页面,点击“创建角色”。
    • 设置角色名称,并在“信任策略”中添加用户B的云账号ID(AliUid),确保用户B能够扮演这个角色。这通常涉及编写一个JSON格式的信任策略,例如允许特定账号执行sts:AssumeRole操作。
  2. 设置资源权限

    • 在角色的“权限”管理中,为该角色附加策略,以允许对日志服务资源的操作。根据需求,可以是所有project和logstore,或者指定的project和logstore。
    • 资源设置示例:
      • 全部资源:acs:log::{projectOwnerAliUid}:*
      • 指定project:acs:log::{projectOwnerAliUid}:project/*
      • 指定logstore:acs:log::{projectOwnerAliUid}:project/{projectName}/logstore/{logstoreName}/*
    • 可参考日志服务RAM资源文档获取更详细的资源定义说明。

用户B操作:获取临时凭证并调用API

  1. 创建子账号并授权(如果用户B还未有子账号或需要特定子账号进行操作):

    • 在自己的RAM控制台创建子账号,并为该子账号授予AssumeRole权限,使其能扮演用户A创建的角色。
  2. 使用STS SDK获取临时凭证

    • 用户B需使用SDK或直接调用STS API,通过扮演上述角色来获取包含临时AccessKeyId、AccessKeySecret和SecurityToken的凭证。这一步骤需要提供用户A创建的角色ARN以及相应的权限验证信息。
  3. 调用日志服务API

    • 使用获取到的临时凭证配置日志服务的SDK,然后就可以通过SDK调用日志服务的API进行操作了,比如写入数据、查询日志等。

示例代码参考

虽然具体代码未直接提供,但你可以参考阿里云官方文档中的Java SDK示例,了解如何使用STS和日志服务SDK进行操作。通常,流程包括初始化STS客户端以获取临时凭证,然后使用这些凭证初始化日志服务客户端来进行实际操作。

  • STS SDK使用说明:查阅STS SDK文档,了解如何使用不同语言的SDK获取临时凭证。
  • 日志服务SDK使用说明:在日志服务开发者指南中找到对应语言的SDK使用方法和示例代码。

确保在操作前仔细阅读相关文档,理解每个步骤的安全性和权限要求,以保证资源访问的安全与合规。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答