授权子账号访问CSP
最近更新时间: 2024-08-23 15:08:00
概述
对于对象存储资源,不同企业之间或同企业多团队之间,需要对不同的团队或人员配置不同的访问权限。您可通过 CAM(访问管理,以下简称 CAM)对存储桶或对象设置不同的操作权限,使得不同团队或人员能够相互协作。
首先,我们需要先了解几个关键概念:主账号、子账号(用户)和用户组。
主账号
主账号又被称为开发商。用户申请云账号时,系统会创建一个用于登录云服务的主账号身份。主账号是云资源使用计量计费的基本主体。
主账号默认拥有其名下所拥有的资源的完全访问权限,包括访问账单信息,修改用户密码,创建用户和用户组以及访问其他云服务资源等。默认情况下,资源只能被主账号所访问,任何其他用户访问都需要获得主账号的授权。
子账号(用户)和用户组
子账号是由主账号创建的实体,有确定的身份 ID 和身份凭证,拥有登录云控制台的权限。
子账号默认不拥有资源,必须由所属主账号进行授权。
一个主账号可以创建多个子账号(用户)。
一个子账号可以归属于多个主账号,分别协助多个主账号管理各自的云资源,但同一时刻,一个子账号只能登录到一个主账号下,管理该主账号的云资源。
子账号可以通过控制台切换开发商(主账号),从一个主账号切换到另外一个主账号。
子账号登录控制台时,会自动切换到默认主账号上,并拥有默认主账号所授予的访问权限。
切换开发商之后,子账号会拥有切换到的主账号授权的访问权限,而切换前的主账号授予的访问权限会立即失效。
用户组是多个相同职能的用户(子账号)的集合。您可以根据业务需求创建不同的用户组,为用户组关联适当的策略,以分配不同权限。
操作步骤
授权子账号访问 CSP 分为三个步骤:创建子账号、对子账号授予权限、子账号访问 CSP 资源。
步骤1:创建子账号
在 CAM 控制台可创建子账号,并配置授予子账号的访问权限。具体操作如下所示:
登录 CAM 控制台。
在左侧导航树中选择【用户管理】>【用户】,进入用户管理页面。
单击【新建用户】,弹出选择新建用户类型窗口,选择【子用户】,进入新建子用户页面。
按照要求填写用户相关信息。
用户名:输入子用户名称,例如 Sub_user。
邮箱:您需要为子用户添加邮箱来获取由云平台发出的绑定微信的邮件。
访问类型:选择编程访问或云平台管理控制台访问。
填写用户信息完毕后,单击【下一步:设定权限】,进行权限设定。
在设置用户权限页面,根据您的实际需求,选择不同的方式为当前新建的子用户设定权限。有三种方式可选:添加到现有用户组,复制现有用户权限,从策略列表中授权。
如需配置更复杂的策略,可进行 步骤2:对子账号授予权限 。
完成权限设定后,单击【下一步:完成】即可创建子账号。
步骤2:对子账号授予权限
对子账号授予权限可通过 CAM,对子账号(用户)或用户组进行策略配置。
在 CAM 控制台,选择【策略管理】>【新建自定义策略】>【按策略语法创建】,进入策略创建页面。
可供选择的模版有空白模板和与 CSP 相关联的预设策略模板,选择您需要授予子账号的策略模板,单击【下一步:编辑策略】。
输入便于您记忆的策略名称,若您选择空白模板,则需要输入您的策略语法,详情请参见 策略示例。您可将策略内容复制粘贴到【编辑策略内容】输入框内,单击【完成】。
创建完成后,将刚才已创建的策略关联到子账号。
勾选子账号确定授权后,子账号即可根据权限范围访问 CSP 资源。
步骤3:子账号访问 CSP 资源
CSP 访问(API 或 SDK)需要如下资源:APPID、SecretId、SecretKey。 当使用子账号访问 CSP 资源时,需要使用主账号的 APPID,子账号的 SecretId 和 SecretKey,您可以在访问管理控制台生成子账号的 SecretId 和 SecretKey。
主账号登录 CAM 控制台 。
选择【用户管理】>【用户】,进入用户管理页面。
单击子账号用户名称,进入子账号信息详情页。
在左侧导航树中,选择【云API 密钥】,并单击【新建密钥】为该子账号创建 SecretId 和 SecretKey。
至此您就可以通过子账号的 SecretId 和 SecretKey、主账号的 APPID,访问 CSP 资源。
注意:
- 子账号需通过 XML API 或基于 XML API 的 SDK 访问 CSP 资源。
- 子账号访问 CSP 资源时,需要使用主账号的 APPID,子账号的 SecretId 和 SecretKey。
基于 XML 的 Java SDK 访问示例
以基于 XML 的 Java SDK 命令行为例,需填入参数如下:
// 1 初始化身份信息
COSCredentials cred = new BasicCOSCredentials("<主账号APPID>", "<子账号SecretId>", "<子账号SecretKey>");
实例如下:
// 1 初始化身份信息
COSCredentials cred = new BasicCOSCredentials("1250000000", "AKIDasdfmRxHPa9oLhJp", "e8Sdeasdfas2238Vi");
COSCMD 命令行工具访问示例
以 COSCMD config
命令行为例,需填入参数如下:
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
策略示例
以下提供几种典型场景的策略示例,在配置自定义策略时,您可将以下参考策略复制粘贴至输入框【编辑策略内容】,根据实际配置修改即可。更多 CSP 常见场景的策略语法请参见 CAM 产品文档 的商用案例部分。
为子账户配置读写权限
为子账户仅配置读写权限,具体策略如下所示:
{
"version": "2.0",
"statement": [
{
"action": [
"name/cos:*"
],
"resource": "*",
"effect": "allow"
},
{
"effect": "allow",
"action": "monitor:*",
"resource": "*"
}
]
}
为子帐户配置只读权限
为子账户仅配置只读权限,具体策略如下所示:
{
"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": "*"
}
]
}
为子账户配置某 IP 段的读写权限
本示例中限制仅 IP 网段为192.168.1.0/24
和192.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"]
}
}
}
]
}