AWS的服务一般来说可以通过两种方式互动,又或者说两种访问类型:
- 网页上的AWS Management Console(管理控制台)
- Programmatically Access(编程访问),即通过AWS API, CLI, SDK。
第一种应该是一般用户最开始接触的方式,即打开浏览器,然后通过账户密码(+MFA)登录,然后在网页上直接操作,而且这种方式也能满足绝大多数的需求,因为云的目的就是简化用户要理解的东西,简化到在网页上点啊点就能实现需求。第二种方式即通过code来操作,一般来说是给”机器“来使用或者需要快速批量管理AWS资源的系统管理员。作为机器,或者说程序,它们不需要”看到“要操作的资源,只需要发送指令来互动即可。而对于系统管理员来说,网上的信息过于繁多,更精确有效的方式就是通过code来管理资源。但其实这两种方式最终都是通过AWS的Web API来交互的,所有也有人直接通过发送http请求来互动。
每个用户都需要有至少一种访问类型,也可以同时配置Web和编程访问。一般如果没有打算使用SDK或者aws cli的话可以先不启用编程访问,之后有需要可以随时启动。而如果这个User就是用来使用CLI或者SDK的话则可以不启用Web console的访问,即不开启用户名密码登录。这里可能有人会请问:如果一个User只起用了编程访问的话,那么它如何在不使用用户名密码与AWS进行身份验证呢?所谓启用编程访问,一定会要求用户启用一个Security Credential,即AWS Access Key ID + AWS Secret Access Key,这一对密钥实际上是一对公钥。用户在使用HTTP是对请求进行签名操作,AWS在收到请求后验证签名,然后处理具体请求,这样就达到了身份验证的效果。还要注意的是,在生成access key时,secret key只会显示一次,用户这是需要记录在安全的地方。如果丢失了secret key,无法从AWS恢复,必须要创建一对新的,然后revoke丢失的。
下面是Lab:
- 创建用户
- 启用/禁用用户名密码登录
- 启用MFA,mobile virtual authenticator
- 创建/注销Access Key