3

1.简述

IAM(IDENTITY & ACCESS MANAGEMENT),身份验证以及访问控制,一种对资源提供可控安全的访问解决方案,现在的公有云基本都支持IAM来对公有云资源提供授权访问,各大云厂商命名可能不一致,如阿里称为RAM (Resource Access Management),但所支持功能基本都是一样.
概况来说IAM主要在发生资源访问时,首先是身份验证,然后是访问权限验证,以上两步通过后才能访问资源.否则访问会被拒绝.

2.关键术语

  • User(用户)

这里是指创建的IAM用户,一般由管理用户创建,新创建的用户没有任何权限.

  • Resource(资源)

这里一般指需要进行访问控制的产品,如公有云的数据库,虚拟机等.

  • Group(用户组)

这里是指用户组,可以将用户划分为不同用户组,授权时针对用户组授权,提高授权效率.

  • Policy(授权策略)

用来描述授权策略的一种描述语言,用于描述谁在xx条件下对xx资源具有xx操作.

  • AK (Access Key)

访问密钥由AccessKeyID和AccessKeySecret组成,用于云服务API请求的身份认证.

  • MFA (Multi-Factor Authentication)

主要为他们输入用户名和密码(第一安全要素-用户已知),还需要MFA设备的身份验证代码(第二安全要素 – 用户已有)。这样通过多重要素结合起来方式为账户和资源提供更高的安全保护.

  • Role(角色)

用户可以通过扮演角色从而拥有角色的权限,这里可以类比现实生活中,一个人会扮演不同角色,当扮演父亲角色时需要教育儿女,当扮演丈夫角色时可能需要跪搓衣板.
对于角色的详细解读,
可以见阿里云文档:https://help.aliyun.com/docum...

3.临时访问凭证

临时访问凭证主要针对一些不安全的访问环境,在这种访问环境下直接存储访问秘钥存在一定风险,发生访问秘钥泄露之后如果无法及时解除权限的话将会很危险。
因此可以使用服务端生成临时访问凭证的方式进行对资源的访问,TS可以指定复杂的策略来对特定的用户进行限制,仅提供最小的权限,且访问凭证具有时间限制,失效后需要重新获取.

5.policy概述

policy一般采用json格式进行配置,样例格式如下:

    {
        "Version": "1",
        "Statement":
        [{
            "Effect": "Allow",
            "Action": ["oss:List*", "oss:Get*"],
            "Resource": ["acs:oss:*:*:samplebucket", "acs:oss:*:*:samplebucket/*"],
            "Condition":
            {
                "IpAddress":
                {
                    "acs:SourceIp": "42.160.1.0"
                }
            }
        }]
    }

5.1 Effect

授权效力包括两种:允许(Allow)和拒绝(Deny),每条授权语句要么Deny,要么是 Allow,当同时存在多条授权语句既包含有Allow又包含有Deny时,遵循Deny优先原则。

5.2 Resource

资源是指被授权的具体对象。
格式为:

acs:<service-name>:<region>:<account-id>:<relative-id>

acs:阿里云缩写
service-name: 服务名字.
region: 地区信息。如果不支持该项,可以使用通配符“*”号来代替。
account-id: 账号ID,
relative-id: 与service相关的资源描述部分,这部分的格式描述支持类似于一个文件路径的树状结构。如对于对象存储,可以指定到特定目录下的某个对象.

5.4 Action

操作方法是指对具体资源的操作,由服务名以及接口名组成.
格式为:

    <service-name>:<action-name>

样例:

    "Action": ["oss:ListBuckets", "ecs:Describe*", "rds:Describe*"]

5.5 Condition

限制条件是指授权生效的限制条件,这里一般通用的限制条件有访问者的IP地址,访问时间段等.

6.总结

IAM在管理平台使用比较广泛,目前各大云厂商的实现均有极大的借鉴意义,针对身份验证方面,传统的用户名密码方式安全度并不高,因此目前通常引入
MFA进行多次验证,MFA主要是TOTP算法(Time-Based One-Time Password Algorithm)的应用.

权限控制方面则尽可能授予最小权限,另一方面也需要做好职权分离.

参考

1.阿里云RAM https://help.aliyun.com/docum...
2.AWS IAM https://aws.amazon.com/cn/iam/
3.Googel IAM https://cloud.google.com/iam/
4.TOTP算法 https://tools.ietf.org/html/r...


沐风
317 声望34 粉丝

keep going...


« 上一篇
Gitlab CI/CD