阿里云权限管理机制包括访问控制和临时安全令牌,可以根据需求使用不同权限的RAM用户来访问智能媒体管理服务,也支持为用户提供访问的临时授权。使用RAM和STS能极大地提高管理的灵活性和安全性。
背景信息
RAM和STS解决的一个核心问题是如何在不暴露阿里云账号的AccessKey的情况下安全地授权其他人访问。因为阿里云账号的AccessKey泄露会带来极大的安全风险,其他人可以随意操作该账号下所有的资源、盗取重要信息等。
RAM
访问控制(RAM)是阿里云提供的管理用户身份与资源访问权限的服务。RAM允许在一个阿里云账号下创建并管理多个身份,并允许给单个身份或一组身份分配不同的权限,从而实现不同用户拥有不同资源访问权限的目的。更多信息,请参见什么是访问控制。
RAM提供了一种长期有效的权限控制机制,通过分出不同权限的RAM用户,将不同的权限分给不同的用户,即使RAM用户的AccessKey泄露也不会造成全局的信息泄露。RAM用户一般情况也是长期有效的。因此RAM用户的AccessKey也不能泄露。
STS
阿里云临时安全令牌(Security Token Service,STS)是阿里云提供的一种临时访问权限管理服务。通过STS服务,您所授权的身份主体(RAM用户或RAM角色)可以获取一个自定义时效和访问权限的临时访问令牌。更多信息,请参见什么是STS。
相对于RAM提供的长效控制机制,STS提供的是一种临时访问授权,通过STS可以获取临时的AccessKey和Token,这些信息可以直接发给临时用户用来访问智能媒体管理。一般来说,从STS获取的权限会受到更加严格的限制,并且拥有时间限制,因此即使这些信息泄露,对于系统的影响也很小。
配置RAM用户权限
为了数据安全和更好的权限控制,建议使用RAM用户访问智能媒体管理。
创建RAM用户。具体操作,请参见创建RAM用户。
为RAM用户授权,根据实际配置RAM用户的权限。具体操作,请参见为RAM用户授权。
如果需要管理智能媒体管理,例如创建项目等,请授予RAM用户AliyunIMMFullAccess权限。
如果只读访问智能媒体管理,例如查看项目等,请授予RAM用户AliyunIMMReadOnlyAccess权限。
为RAM用户设置多因素认证。具体操作,请参见为RAM用户启用多因素认证。
配置临时用户权限
创建临时角色及授权。
创建可信实体为阿里云账号的RAM角色。具体操作,请参见创建可信实体为阿里云账号的RAM角色。
创建自定义策略。具体操作,请参见创建自定义权限策略。
说明如果需要更精细的权限控制,您可以自定义策略的权限。更多信息,请参见智能媒体管理自定义权限策略参考。
为临时角色授权。具体操作,请参见为RAM角色授权。
临时授权访问。
从STS获取的临时访问凭证。具体操作,请参见AssumeRole - 获取扮演角色的临时身份凭证。
使用临时授权读写数据。
您可以使用临时授权调用不同语言的SDK访问智能媒体管理。Java SDK请参考以下方式创建IAcsClient对象,传入从STS获取的AccessKeyId、AccessKeySecret和SecurityToken等参数。
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", stsAccessKeyId, stsAccessKeySecret, stsToken); IAcsClient client = new DefaultAcsClient(profile);
自定义RAM Policy
通过自定义RAM Policy实现用户权限控制,主要配置如下表所示。
参数 | 说明 |
Effect | 是否允许用户操作。可选值如下:
|
Action | 智能媒体管理对外提供的API操作。格式为 |
Resource | 智能媒体管理目前只有Project一种资源,格式为
|
更多关于权限策略的信息,请参见创建自定义策略。
常见授权示例
完全授权
RAM Policy将允许用户访问使用智能媒体管理的所有功能,示例代码如下。
{
"Version": "1",
"Statement": [
{
"Action": "imm:*",
"Resource": "*",
"Effect": "Allow"
}
]
}
授权通配
RAM Policy支持通配符*
,可以实现批量授权。
如下示例代码表示允许用户调用所有地域以imm-test-doc
开头的Project下的可读操作。
{
"Statement": [
{
"Effect": "Allow",
"Action": ["imm:List*", "imm:Get*"],
"Resource": "acs:imm:*:150910xxxxxxxxxx:project/imm-test-doc*"
}
],
"Version": "1"
}
授权特定Project的特定操作
如下示例代码表示授予用户以下权限:
允许访问ListProjects - 列出所有项目信息的列表接口。
允许访问CreateOfficeConversionTask - 创建文档转换任务接口,并且仅能操作华东2(上海)地域的imm-test-doc-proj项目。
允许访问CreateFigureClusteringTask - 创建人物聚类任务和CreateFigureClustersMergingTask - 合并人物聚类接口,并且仅能操作华东2(上海)地域的imm-test-media-proj项目。
{ "Statement": [ { "Effect": "Allow", "Action": ["imm:ListProjects"], "Resource": "*" }, { "Effect": "Allow", "Action": ["imm:CreateOfficeConversionTask"], "Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-doc-proj" }, { "Effect": "Allow", "Action": ["imm:CreateFigureClusteringTask", "imm:CreateFigureClustersMergingTask"], "Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-media-proj" } ], "Version": "1" }
授权特定数据集的特定操作
如下示例代码表示授予用户以下权限:
允许访问ListDatasets - 列出数据集接口。
允许访问IndexFileMeta - 索引文件元信息接口,并且仅能操作华东2(上海)地域的imm-test-media-proj项目的dataset1数据集。
允许访问CreateFigureClusteringTask - 创建人物聚类任务和CreateFigureClustersMergingTask - 合并人物聚类接口,并且仅能操作华东2(上海)地域的imm-test-media-proj项目的dataset1数据集。
{
"Statement": [
{
"Effect": "Allow",
"Action": ["imm:ListDatasets"],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": ["imm:IndexFileMeta"],
"Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-doc-proj/dataset/dataset1"
},
{
"Effect": "Allow",
"Action": ["imm:CreateFigureClusteringTask", "imm:CreateFigureClustersMergingTask"],
"Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-media-proj/dataset/dataset1"
}
],
"Version": "1"
}