AWS IAM 相关概念
Table of Contents
1. IAM Role(IAM 角色)
什么是 IAM 角色?
- IAM 角色是 AWS 提供的一种 身份,类似于用户,但它不是为特定人创建的,而是赋予 AWS 服务或其他身份的权限集合。
- 角色的特点:临时性、需要通过某种机制“扮演”(assume)角色后才能使用它的权限。
使用场景:
- 一个 EC2 实例需要访问 S3 存储桶,但不需要使用长期密钥(如 Access Key 和 Secret Key)。
- AWS Lambda 函数调用 DynamoDB 时需要临时权限。
示例:
假如一个角色被授予读取 S3 的权限,那么 EC2 或 Lambda 可以在运行时“扮演”这个角色来访问 S3。
2. IAM Policy(IAM 策略)
什么是 IAM 策略?
- IAM 策略是用来 定义权限 的文档,通常以 JSON 格式编写。
- 它规定了“谁可以做什么”,具体定义:
- 谁:角色、用户或组。
- 可以做什么:允许访问哪些 AWS 服务或资源,以及可以执行哪些操作(例如
s3:GetObject
)。 - 限制条件:如时间范围、IP 地址等。
策略示例(JSON):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket-name/*"
}
]
}
- 上述策略允许读取 S3 中
my-bucket-name
的所有对象。
分类:
- 管理型策略(Managed Policy):AWS 提供的通用策略。
- 自定义策略(Custom Policy):用户自己创建的策略。
3. IAM Trust Policy(IAM 信任策略)
什么是 IAM 信任策略?
- 信任策略定义了 谁可以扮演一个 IAM 角色。
- 如果 IAM 策略规定了“权限”,那么 信任策略规定了谁可以使用这些权限。
关键点:
- 信任策略是附加在 IAM 角色上的。
- 只有被信任的实体(AWS 服务、用户、账户)才能“扮演”该角色。
信任策略示例(JSON):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 上述策略表示允许 AWS 的 EC2 服务扮演该角色。
4. IAM Role Anywhere
什么是 IAM Role Anywhere?
- IAM Role Anywhere 是 AWS 提供的功能,允许你在 本地服务器或其他非 AWS 环境 使用 IAM 角色来访问 AWS 服务。
- 它通过 X.509 证书 来验证身份并授予临时权限。
解决的问题:
- 在非 AWS 环境中,你可能需要访问 AWS 服务(如 S3、DynamoDB),但传统上需要使用长期凭据(Access Key 和 Secret Key)。
- IAM Role Anywhere 提供了更安全的替代方案,允许基于证书的认证,避免长期密钥泄露风险。
工作原理:
- 创建一个 IAM 角色并附加必要权限。
- 配置信任策略,允许 Role Anywhere 认证的实体扮演该角色。
- 在本地系统中安装并配置证书。
- 使用 IAM Role Anywhere SDK 自动请求临时凭据访问 AWS 服务。
适用场景:
- 数据中心或本地服务器需要安全地访问 AWS。
- 使用非 AWS 云服务(如 GCP 或 Azure)时需要跨云访问 AWS。
总结
概念 | 定义 | 关键点 |
---|---|---|
IAM Role | AWS 服务或其他身份使用的权限集合,需临时扮演。 | 角色本身无固定密钥,通过机制(如信任策略)授予临时权限。 |
IAM Policy | 定义了“可以做什么”的权限策略文档。 | 允许或拒绝访问 AWS 资源的规则,以 JSON 格式定义。 |
IAM Trust Policy | 定义了“谁可以扮演该角色”的策略。 | 用于角色的安全性控制,常用于 EC2、Lambda 等服务的授权。 |
IAM Role Anywhere | 允许本地环境通过角色访问 AWS 服务的功能。 | 基于证书认证,避免使用长期密钥,是混合云场景下的安全解决方案。 |
通过这些机制,AWS 提供了强大且灵活的权限管理功能,适用于各种场景! 😊
Comments |0|
Category: 似水流年