前面 《AWS IAM 基本概念》了解了 AWS 身份和访问管理,是该了解 AWS 资源了,AWS 怎么控制访问资源
AWS ARN(Amazon Resource Name)是用于唯一标识 AWS 资源的字符串。ARN 在 AWS 中广泛使用,用于指定资源的权限、配置和管理。每个 ARN 都遵循特定的格式,包含有关资源类型、区域、账户和资源名称的信息。
ARN 的通用格式如下:
arn:partition:service:region:account-id:resource
以下是一些常见的 ARN 示例:
arn:aws:s3:::my-bucket
partition:aws
service:s3
region:无(S3 是全球服务)
account-id:无
resource:my-bucket
arn:aws:ec2:us-west-2:123456789012:instance/i-0abcd1234efgh5678
partition:aws
service:ec2
region:us-west-2
account-id:123456789012
resource:instance/i-0abcd1234efgh5678
arn:aws:iam::123456789012:role/MyRole
partition:aws
service:iam
region:无(IAM 是全球服务)
account-id:123456789012
resource:role/MyRole
arn:aws:lambda:us-east-1:123456789012:function:MyFunction
partition:aws
service:lambda
region:us-east-1
account-id:123456789012
resource:function:MyFunction
ARN 在 AWS 中有多种用途,包括但不限于:
通过使用 ARN,AWS 可以确保每个资源在全球范围内都是唯一的,并且可以被精确地引用和管理。
在 AWS 中,ARN(Amazon Resource Name)在权限管理中起着关键作用。通过使用 ARN,可以在 IAM 策略中精确地指定哪些资源可以被访问,以及可以执行哪些操作。以下是关于如何使用 ARN 进行权限管理的详细说明。
IAM 策略是一个 JSON 文档,定义了允许或拒绝的操作。其基本结构如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow" | "Deny", "Action": "service:operation", "Resource": "arn:aws:service:region:account-id:resource" } ] } 关键字段
以下是一些使用 ARN 进行权限管理的示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::my-bucket/*" } ] } { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:us-west-2:123456789012:instance/i-0abcd1234efgh5678" } ] } { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:GetItem" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MyTable" } ] } 在 AWS 中,ARN(Amazon Resource Name)在权限管理中起着关键作用。通过使用 ARN,可以在 IAM 策略中精确地指定哪些资源可以被访问,以及可以执行哪些操作。以下是关于如何使用 ARN 进行权限管理的详细说明。
在 ARN 中,可以使用通配符 * 来匹配多个资源。例如:
arn:aws:s3:::my-bucket/*:匹配 my-bucket 存储桶中的所有对象。arn:aws:ec2:us-west-2:123456789012:instance/*:匹配特定账户和区域中的所有 EC2 实例。在 AWS 中,ARN(Amazon Resource Name)用于唯一标识资源,并在各种服务和操作中引用这些资源。以下是一些常见的 ARN 资源引用场景和示例。
在 IAM 策略中,可以使用 ARN 来指定哪些资源可以被访问。如上面 ARN 权限管理中的示例
在使用 AWS CLI 或 SDK 时,可以使用 ARN 来指定操作的目标资源。
示例:使用 AWS CLI 启动 EC2 实例
aws ec2 start-instances --instance-ids arn:aws:ec2:us-west-2:123456789012:instance/i-0abcd1234efgh5678 在 AWS CloudFormation 模板中,可以使用 ARN 来引用资源。
示例:引用 IAM 角色
Resources: MyInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: Roles: - arn:aws:iam::123456789012:role/MyRole 在 AWS Lambda 函数中,可以使用 ARN 来指定触发器或目标资源。
示例:Lambda 函数触发 S3 事件
{ "Type": "AWS::Lambda::Permission", "Properties": { "Action": "lambda:InvokeFunction", "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:MyFunction", "Principal": "s3.amazonaws.com", "SourceArn": "arn:aws:s3:::my-bucket" } } 在 Amazon CloudWatch 事件中,可以使用 ARN 来指定事件目标。
示例:CloudWatch 事件触发 Lambda 函数
{ "Type": "AWS::Events::Rule", "Properties": { "EventPattern": { "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ], "detail": { "state": [ "running" ] } }, "Targets": [ { "Arn": "arn:aws:lambda:us-east-1:123456789012:function:MyFunction", "Id": "MyFunctionTarget" } ] } }