tencent cloud

文档反馈

授权子账号访问 COS

最后更新时间:2024-01-06 10:47:50

    概述

    对于腾讯云对象存储(Cloud Object Storage,COS)资源,不同企业之间或同企业多团队之间,需要对不同的团队或人员配置不同的访问权限。您可通过访问管理(Cloud Access Management,CAM)对存储桶或对象设置不同的操作权限,使得不同团队或人员能够相互协作。
    首先,我们需要先了解几个关键概念:主账号、子账号(用户)和用户组。CAM 的相关术语、配置详细描述请参见访问管理的 词汇表

    主账号

    主账号又被称为开发商。用户申请腾讯云账号时,系统会创建一个用于登录腾讯云服务的主账号身份。主账号是腾讯云资源使用计量计费的基本主体。
    主账号默认拥有其名下所拥有的资源的完全访问权限,包括访问账单信息,修改用户密码,创建用户和用户组以及访问其他云服务资源等。默认情况下,资源只能被主账号所访问,任何其他用户访问都需要获得主账号的授权。

    子账号(用户)和用户组

    子账号是由主账号创建的实体,有确定的身份 ID 和身份凭证,拥有登录腾讯云控制台的权限。
    子账号默认不拥有资源,必须由所属主账号进行授权。
    一个主账号可以创建多个子账号(用户)。
    一个子账号可以归属于多个主账号,分别协助多个主账号管理各自的云资源,但同一时刻,一个子账号只能登录到一个主账号下,管理该主账号的云资源。
    子账号可以通过控制台切换开发商(主账号),从一个主账号切换到另外一个主账号。
    子账号登录控制台时,会自动切换到默认主账号上,并拥有默认主账号所授予的访问权限。
    切换开发商之后,子账号会拥有切换到的主账号授权的访问权限,而切换前的主账号授予的访问权限会立即失效。
    用户组是多个相同职能的用户(子账号)的集合。您可以根据业务需求创建不同的用户组,为用户组关联适当的策略,以分配不同权限。

    操作步骤

    授权子账号访问 COS 分为三个步骤:创建子账号、对子账号授予权限、子账号访问 COS 资源。

    步骤1:创建子账号

    在 CAM 控制台可创建子账号,并配置授予子账号的访问权限。具体操作如下所示:
    1. 登录 CAM 控制台
    2. 选择用户 > 用户列表 > 新建用户,进入新建用户页面。
    3. 选择自定义创建,选择可访问资源并接收消息类型,单击下一步
    4. 按照要求填写用户相关信息。
    设置用户信息:输入子用户名称,例如 Sub_user。输入子用户的邮箱,您需要为子用户添加邮箱来获取由腾讯云发出的绑定微信的邮件。
    访问方式:选择编程访问和腾讯云控制台访问。其他配置可按需选择。
    5. 填写用户信息完毕后,单击下一步,进行身份验证。
    6. 身份验证完毕,设置子用户权限。根据系统提供的策略选择,可配置简单的策略,例如 COS 的存储桶列表的访问权限,只读权限等。如需配置更复杂的策略,可进行 步骤2:对子账号授予权限
    7. 设置用户标签,该项为可选项,可按需设置,单击下一步
    8. 确认配置信息无误后,单击完成即可创建子账号。

    步骤2:对子账号授予权限

    创建自定义策略或者选择已有策略,并将策略关联到子账号。
    1. 登录 CAM 控制台
    2. 选择策略 > 新建自定义策略 > 按策略语法创建,进入策略创建页面。
    3. 您可按照实际需求选择空白模板自定义授权策略,或选择与 COS 相关联的系统模板,单击下一步
    4. 输入便于您记忆的策略名称,若您选择空白模板,则需要输入您的策略语法,详情请参见 策略示例。您可将策略内容复制粘贴到策略内容编辑框内,确认输入无误后单击完成即可。
    5. 创建完成后,将刚才已创建的策略关联到子账号。
    
    
    6. 勾选子账号并单击确定授权后,即可使用子账号访问所限定的 COS 资源。
    
    

    步骤3:子账号访问 COS 资源

    根据上面步骤1设置的两种访问方式:编程访问和腾讯云控制台访问两种,介绍如下:
    (1)编程访问
    当使用子账号通过编程(例如 API、SDK 和工具等)访问 COS 资源时需要先获取主账号的 APPID、子账号的 SecretId 和 SecretKey 信息。您可以在访问管理控制台生成子账号的 SecretId 和 SecretKey。
    1. 主账号登录 CAM 控制台
    2. 选择用户列表,进入用户列表页面。
    3. 单击子账号用户名称,进入子账号信息详情页。
    4. 单击 API 密钥页签,并单击新建密钥为该子账号创建 SecretId 和 SecretKey。
    至此您就可以通过子账号的 SecretId 和 SecretKey、主账号的 APPID,访问 COS 资源。
    注意
    子账号需通过 XML API 或基于 XML API 的 SDK 访问 COS 资源。

    基于 XML 的 Java SDK 访问示例

    以基于 XML 的 Java SDK 命令行为例,需填入参数如下:
    // 初始化身份信息
    COSCredentials cred = new BasicCOSCredentials("<主账号 APPID>", "<子账号 SecretId>", "<子账号 SecretKey>");
    实例如下:
    String secretId = System.getenv("secretId");//子账号的 SecretId,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    String secretKey = System.getenv("secretKey");//子账号的的 SecretKey,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
    
    // 初始化身份信息
    COSCredentials cred = new BasicCOSCredentials("<主账号 APPID>", secretId, secretKey);

    COSCMD 命令行工具访问示例

    以 COSCMD 的配置命令为例,需填入的参数如下:
    coscmd config -u <主账号 APPID> -a <子账号 SecretId> -s <子账号 SecretKey> -b <主账号 bucketname> -r <主账号 bucket 所属地域>
    实例如下:
    coscmd config -u 1250000000 -a AKIDasdfmRxHPa9oLhJp**** -s e8Sdeasdfas2238Vi**** -b examplebucket -r ap-beijing
    (2)腾讯云控制台
    子用户被授予权限后,可在 子用户登录界面 输入主账号 ID、子用户名和子用户密码登录控制台,并在云产品中选择单击对象存储,即可访问主账号下的存储资源。

    策略示例

    以下提供几种典型场景的策略示例,在配置自定义策略时,您可将以下参考策略复制粘贴至输入框编辑策略内容,根据实际配置修改即可。更多 COS 常见场景的策略语法请参见 访问策略语言概述CAM 产品文档商用案例部分。

    示例1:为子账户配置 COS 全读写权限

    注意
    该策略授权的范围较大,请谨慎配置。
    具体策略如下所示:
    {
    "version": "2.0",
    "statement": [
    {
    "action": [
    "name/cos:*"
    ],
    "resource": "*",
    "effect": "allow"
    },
    {
    "effect": "allow",
    "action": "monitor:*",
    "resource": "*"
    }
    ]
    }

    示例2:为子账户配置只读权限

    为子账户仅配置只读权限,具体策略如下所示:
    {
    "version": "2.0",
    "statement": [
    {
    "action": [
    "name/cos:List*",
    "name/cos:Get*",
    "name/cos:Head*",
    "name/cos:OptionsObject"
    ],
    "resource": "*",
    "effect": "allow"
    },
    {
    "effect": "allow",
    "action": "monitor:*",
    "resource": "*"
    }
    ]
    }

    示例3:为子账户配置只写权限(不含删除)

    具体策略如下所示:
    {
    "version": "2.0",
    "statement": [
    {
    "effect": "allow",
    "action": [
    "cos:ListParts",
    "cos:PostObject",
    "cos:PutObject*",
    "cos:InitiateMultipartUpload",
    "cos:UploadPart",
    "cos:UploadPartCopy",
    "cos:CompleteMultipartUpload",
    "cos:AbortMultipartUpload",
    "cos:ListMultipartUploads"
    ],
    "resource": "*"
    }
    ]
    }

    示例4:为子账户配置某 IP 段的读写权限

    本示例中限制仅 IP 网段为 192.168.1.0/24192.168.2.0/24 的地址具有读写权限,如下所示。 更丰富的生效条件填写,请参见 生效条件
    {
    "version": "2.0",
    "statement": [
    {
    "action": [
    "cos:*"
    ],
    "resource": "*",
    "effect": "allow",
    "condition": {
    "ip_equal": {
    "qcs:ip": ["192.168.1.0/24", "192.168.2.0/24"]
    }
    }
    }
    ]
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持