为RAM用户配置权限

阿里云权限管理机制包括访问控制和临时安全令牌,可以根据需求使用不同权限的RAM用户来访问智能媒体管理服务,也支持为用户提供访问的临时授权。使用RAMSTS能极大地提高管理的灵活性和安全性。

背景信息

RAMSTS解决的一个核心问题是如何在不暴露阿里云账号的AccessKey的情况下安全地授权其他人访问。因为阿里云账号的AccessKey泄露会带来极大的安全风险,其他人可以随意操作该账号下所有的资源、盗取重要信息等。

  • RAM

    • 访问控制(RAM)是阿里云提供的管理用户身份与资源访问权限的服务。RAM允许在一个阿里云账号下创建并管理多个身份,并允许给单个身份或一组身份分配不同的权限,从而实现不同用户拥有不同资源访问权限的目的。更多信息,请参见什么是访问控制

    • RAM提供了一种长期有效的权限控制机制,通过分出不同权限的RAM用户,将不同的权限分给不同的用户,即使RAM用户的AccessKey泄露也不会造成全局的信息泄露。RAM用户一般情况也是长期有效的。因此RAM用户的AccessKey也不能泄露。

  • STS

    • 阿里云临时安全令牌(Security Token Service,STS)是阿里云提供的一种临时访问权限管理服务。通过STS服务,您所授权的身份主体(RAM用户或RAM角色)可以获取一个自定义时效和访问权限的临时访问令牌。更多信息,请参见什么是STS

    • 相对于RAM提供的长效控制机制,STS提供的是一种临时访问授权,通过STS可以获取临时的AccessKeyToken,这些信息可以直接发给临时用户用来访问智能媒体管理。一般来说,从STS获取的权限会受到更加严格的限制,并且拥有时间限制,因此即使这些信息泄露,对于系统的影响也很小。

配置RAM用户权限

为了数据安全和更好的权限控制,建议使用RAM用户访问智能媒体管理。

  1. 创建RAM用户。具体操作,请参见创建RAM用户

  2. RAM用户授权,根据实际配置RAM用户的权限。具体操作,请参见RAM用户授权

    • 如果需要管理智能媒体管理,例如创建项目等,请授予RAM用户AliyunIMMFullAccess权限。

    • 如果只读访问智能媒体管理,例如查看项目等,请授予RAM用户AliyunIMMReadOnlyAccess权限。

  3. RAM用户设置多因素认证。具体操作,请参见RAM用户启用多因素认证

配置临时用户权限

  1. 创建临时角色及授权。

    1. 创建可信实体为阿里云账号的RAM角色。具体操作,请参见创建可信实体为阿里云账号的RAM角色

    2. 创建自定义策略。具体操作,请参见创建自定义权限策略

      说明

      如果需要更精细的权限控制,您可以自定义策略的权限。更多信息,请参见智能媒体管理自定义权限策略参考

    3. 为临时角色授权。具体操作,请参见RAM角色授权

  2. 临时授权访问。

    1. 创建自定义策略。具体操作,请参见创建自定义权限策略

    2. 授权RAM用户临时角色。具体操作,请参见RAM用户授权

  3. STS获取的临时访问凭证。具体操作,请参见AssumeRole - 获取扮演角色的临时身份凭证

  4. 使用临时授权读写数据。

    您可以使用临时授权调用不同语言的SDK访问智能媒体管理。Java SDK请参考以下方式创建IAcsClient对象,传入从STS获取的AccessKeyId、AccessKeySecretSecurityToken等参数。

    DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", stsAccessKeyId, stsAccessKeySecret, stsToken);
    IAcsClient client = new DefaultAcsClient(profile);

自定义RAM Policy

通过自定义RAM Policy实现用户权限控制,主要配置如下表所示。

参数

说明

Effect

是否允许用户操作。可选值如下:

  • Allow:允许

  • Deny:拒绝

Action

智能媒体管理对外提供的API操作。格式为imm:<action>,例如imm:CreateOfficeConversionTask。Action列表的更多信息,请参见API概览

Resource

智能媒体管理目前只有Project一种资源,格式为acs:imm:<region-id>:<uid>:project/<project>acs:imm:<region-id>:<uid>:project/<project>/dataset/<dataset>,例如acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-doc-projacs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-photos/dataset/dataset1。相关参数说明如下:

更多关于权限策略的信息,请参见创建自定义策略

常见授权示例

完全授权

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的特定操作

如下示例代码表示授予用户以下权限:

授权特定数据集的特定操作

如下示例代码表示授予用户以下权限:

{
    "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"
}