什么是IAM
IAM是一种AWS的web service, 专门用来帮助你去做对AWS资源访问的控制,你可以使用IAM来控制authentication以及authorization
AWS service vs AWS Resource
AWS中提供服务的是service比如S3、IAM、VPC、SNS, SES, KMS
AWS中Service中那些具体可量化的实体可以被理解成resource,所有的resource都有ARN(AWS resource name类似于ID)。比如S3是一个service,S3中的一个object/bucket就是一个Resource。再比如EC2是一个service但是一个EC2 instance就是一个resource。再比如IAM是service,但是IAM中的一个IAM rol就是一个resource。
authentication vs authorization
authentication指的是通过验证你的credentials(用户名、密码/)
来证明你的身份(证明我是一个合法用户)
authorization指的是验证你是否有某种权限(permission)去访问某一些resource。authorization通常发生在authentication之后,也就是你必须先证明你是一个合法用户登录之后,才能考虑是否能够访问一些资源
当你第一次创建了一个AWS account
, AWS会为你创建第一个IAM User root user
。这个User通过你account的用户名和密码进行authenticate,拥有当前这个account下所有AWS service、resouce的所有权限。
当你利用account用户名和密码登录后,相当于你登录了root user,但是由于root权限太多,为了资源安全起见,AWS推荐我们不要使用root用户执行task,而是仅仅利用root用户创建第一个IAM user,然后不再使用root user登录。
IAM中的术语
Resources
如果一个IAM是service,那么存储在IAM中的 IAM role、IAM User、IAM policy、IAM Rroup都是IAM Resources。
Identities
在IAM中用来做identify和group的就是Identities,可以给Identities加权限(policy、permission),我的理解就是那些可以代表身份的资源,比如users, groups, and roles
。比如policy肯定就不是一个身份。
Entities
IAM中专门用来做authentication的资源,就是可以用来登录,或者说可以用来获取credential
的资源。通常最好理解的就是IAM user,可以用来登录。federated users,也是一个实体。但是还有一个就是assumed IAM roles
assume某一个role之后,会获取credential.
credentials
通常我们使用IAM Entities登录之后,就会获取credentials,有了credentia之后就可以给AWS发送请求,操纵Resource。
Principals
使用root user或者AWS IAM Entities(IAM user,federated users、assumed role)登录,然后给AWS发送请求操作AWS资源的人或者application。比如,我在命令行中登录某一个IAM user,然后create a bucket,那么我就是Principal。
那么Principal发送的request是什么呢?
一个Principal利用AWS console
/AWS CLI
/AWS API
操纵资源,其实都是通过给AWS 发送request操纵资源的。
每当Principals利用IAM ENtity登录之后,一定会获取crendital
, 这些crendital
中包括的是你authentication(登录token)以及authorization(permission)的信息。当你给AWS发送request的时候,会在request body中将这些信息都带上,AWS会valid这些信息来查看你是否有能力做某一些操作。
网友评论