最近更新时间:2024-06-25 19:35:55
默认情况下,所有 KS3 资源都是私有的,包括存储空间(Bucket)、对象(Object)和相关子资源(例如:Lifecycle 配置和 ACL 配置)。只有资源拥有者,即创建该资源的 KS3 账户可以访问该资源。存储空间的创建者也具有该存储空间下所有资源的访问权限。
资源拥有者可以选择通过编写访问策略授予他人访问权限。授予访问权限,指的是资源拥有者可以决定哪些资源、对什么人、在何种条件下、授予执行什么操作的权限。因此描述一个访问策略,通常包括四个元素:资源、被授权人、条件(非必需)、操作。下面依次说明访问策略的各个元素和具体的访问策略类型。
存储空间和对象/文件是KS3的主要资源,他们都有相关联的资源。
存储空间的子资源包括:
Bucket Policy – 空间策略
ACL – 存储空间访问控制列表
Lifecycle – 存储生命周期配置信息
CORS(跨域资源共享)– 存储空间跨域请求配置
Logging – KS3的存储空间访问日志
对象/文件的子资源包括:
ACL – 存储对象访问权限列表。
账户(主账户)
账户或称主账户是客户在金山云资源归属、资源计量、资源计费的主体。任何客户在使用金山云的服务前,都需要首先注册生成一个金山云账户,一般使用用户名作为账户的登录标识。
账户是其名下所有云计算资源的所有者,拥有名下全部资源的控制权限,拥有资源的订单、账单;云计算资源可被所属账户随意操作访问。
IAM用户(子用户)
IAM用户是账户下的授权实体,也是归属于账户的一种资源。IAM用户不拥有任何云计算资源、不能独立计量和计费,只能被主账户授权管理其名下的各种资源,其所管理的资源归属于主账户(由主账户付费),且没有独立的账单。
IAM用户在获得主账户的授权后,能够被设置密码和访问密钥,从而登录控制台和使用openAPI管理主账户的资源。
角色(Role)
IAM角色是一种虚拟用户(或影子账户),它是IAM用户类型的一种。这种虚拟用户有确定的身份,也可以被赋予一组权限(Policy),但它没有确定的身份认证密钥(登录密码或AccessKey)。与普通IAM用户的差别主要在使用方法上,IAM角色需要被一个授信的实体用户扮演,扮演成功后实体用户将获得IAM角色的临时安全令牌,使用这个临时安全令牌就能以角色身份访问被授权的资源。
关于资源归属的说明
默认情况下,所有KS3资源都是私有的,只有资源拥有者才能访问资源,资源拥有者是指创建资源的KS3账户。
创建存储空间(Bucket)和对象/文件(Object)的 KS3 账户拥有这些资源的所有权限
IAM子用户不拥有任何资源,如果一个IAM子用户再被授权后,上传了一个对象/文件,那么该IAM用户所属的父账户拥有此对象/文件。
存储空间拥有者可以向其他KS3账户授予上传对象的跨账户权限。在这种情况下,上传对象的KS3账户拥有这些对象。存储空间拥有者对其他账户拥有的对象也同时拥有所有权限,账单也是由存储空间拥有者支付。
在授予权限时指定的条件。访问请求只有在满足指定条件时,访问策略才可以生效。KS3支持指定IP地址、指定请求中带有的请求头等条件设置。
KS3 提供一系列针对KS3资源的API操作,详情请见API概览。
访问策略分为基于资源的策略和用户策略两类。附加到资源(存储空间和文件)的访问策略称为基于资源的策略,例如,存储空间策略(bucket policy)和访问控制列表 (ACL) 就是基于资源的策略;访问策略附加到您账户中的用户,这些策略称为用户策略(user policy)。
ACL访问策略:
每一个存储空间和对象都关联一个ACL。ACL可以向其他的KS3账户授予基本的读写权限,ACL使用XML格式来表示,以下的例子指定存储空间的拥有者授予另外一个用户Read权限。
<AccessControlPolicy>
<Owner>
<ID>Owner-User-Id</ID>
<DisplayName>Owner-User-Name</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>User2-Id</ID>
<DisplayName>User2-Name</DisplayName>
</Grantee>
<Permission>READ</Permission>
</Grant>
...
</AccessControlList>
</AccessControlPolicy>
空间策略(Bucket Policy):
用户可以在存储空间设置空间策略,向其他KS3账户或者IAM子用户(包含本账户下的子用户和其他账户下的子用户)授予存储空间以及其中文件/对象的权限。空间策略可以很好补充ACL访问策略,授权的权限更多。空间策略使用JSON文件来表示。下面为一个空间策略的例子,允许账户ID为11123的用户可以对mybucket和mybucket下所有文件做任何操作。
{
"Version":"2008-10-17",
"Statement":[{
"Sid":"1",
"Effect":"Allow",
"Principal":{"KSC":["krn:ksc:iam:::11123:root"]},
"Action":["ks3:*"],
"Resource":["krn:ksc:ks3:::mybucket","krn:ksc:ks3:::mybucket/*"]
}]
}
用户可以使用 身份与访问控制中心 (Identity and Access Mutual,简称:IAM) 管理对 KS3 资源的访问权
限。使用 IAM,用户可以在主账户中创建 子用户(IAM 用户)、组和角色,并通过附加访问策略授予它们对KS3资源的访问权限。
{
"Version":"2015-11-01",
"Statement":[{
"Effect":"Allow",
"Action":["ks3:*"],
"Resource":["krn:ksc:ks3:::mybucket","krn:ksc:ks3:::mybucket/*"]
}]
}
纯净模式