AWS 资源 ARN 基本概念

AWS 资源 ARN 基本概念

  • 引言
  • [什么是 ARN](#什么是 ARN)
    • [ARN 格式](#ARN 格式)
    • [ARN 示例](#ARN 示例)
      • [S3 存储桶](#S3 存储桶)
      • [EC2 实例](#EC2 实例)
      • [IAM 角色](#IAM 角色)
      • [Lambda 函数](#Lambda 函数)
  • [ARN 用途](#ARN 用途)
  • [ARN 权限管理](#ARN 权限管理)
    • [IAM 策略结构](#IAM 策略结构)
    • [IAM 策略示例](#IAM 策略示例)
      • [允许访问特定 S3 存储桶](#允许访问特定 S3 存储桶)
      • [允许启动和停止特定 EC2 实例](#允许启动和停止特定 EC2 实例)
      • [允许访问特定 DynamoDB 表](#允许访问特定 DynamoDB 表)
      • 通配符
  • [ARN 资源引用](#ARN 资源引用)
    • [IAM 策略中的资源引用](#IAM 策略中的资源引用)
    • [AWS CLI 和 SDK 中的资源引用](#AWS CLI 和 SDK 中的资源引用)
    • [CloudFormation 模板中的资源引用](#CloudFormation 模板中的资源引用)
    • [Lambda 函数中的资源引用](#Lambda 函数中的资源引用)
    • [CloudWatch 事件中的资源引用](#CloudWatch 事件中的资源引用)

引言

前面 《AWS IAM 基本概念》了解了 AWS 身份和访问管理,是该了解 AWS 资源了,AWS 怎么控制访问资源

什么是 ARN

AWS ARN(Amazon Resource Name)是用于唯一标识 AWS 资源的字符串。ARN 在 AWS 中广泛使用,用于指定资源的权限、配置和管理。每个 ARN 都遵循特定的格式,包含有关资源类型、区域、账户和资源名称的信息。

ARN 格式

ARN 的通用格式如下:

arn:partition:service:region:account-id:resource

  • arn:固定的前缀,表示这是一个 ARN。
  • partition:AWS 的分区,例如 aws(用于大多数 AWS 区域)、aws-cn(用于中国区域)、aws-us-gov(用于美国政府区域)。
  • service:资源所属的 AWS 服务,例如 s3、ec2、iam。
  • region:资源所在的区域,例如 us-west-2、eu-central-1。某些全球性资源(如 IAM 资源)没有区域部分。
  • account-id:AWS 账户 ID,通常是 12 位数字。
  • resource:资源标识符,格式因服务而异。

ARN 示例

以下是一些常见的 ARN 示例:

S3 存储桶

arn:aws:s3:::my-bucket

partition:aws

service:s3

region:无(S3 是全球服务)

account-id:无

resource:my-bucket

EC2 实例

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

IAM 角色

arn:aws:iam::123456789012:role/MyRole

partition:aws

service:iam

region:无(IAM 是全球服务)

account-id:123456789012

resource:role/MyRole

Lambda 函数

arn:aws:lambda:us-east-1:123456789012:function:MyFunction

partition:aws

service:lambda

region:us-east-1

account-id:123456789012

resource:function:MyFunction

ARN 用途

ARN 在 AWS 中有多种用途,包括但不限于:

  • 权限管理:在 IAM 策略中指定资源的权限。
  • 资源引用:在 CloudFormation 模板、CLI 命令和 API 调用中引用特定资源。
  • 日志和监控:在 CloudTrail 日志和 CloudWatch 事件中标识资源。

通过使用 ARN,AWS 可以确保每个资源在全球范围内都是唯一的,并且可以被精确地引用和管理。

ARN 权限管理

在 AWS 中,ARN(Amazon Resource Name)在权限管理中起着关键作用。通过使用 ARN,可以在 IAM 策略中精确地指定哪些资源可以被访问,以及可以执行哪些操作。以下是关于如何使用 ARN 进行权限管理的详细说明。

IAM 策略结构

IAM 策略是一个 JSON 文档,定义了允许或拒绝的操作。其基本结构如下:

json 复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow" | "Deny",
            "Action": "service:operation",
            "Resource": "arn:aws:service:region:account-id:resource"
        }
    ]
}

关键字段

  • Version:指定策略语言的版本。常用版本是 2012-10-17。
  • Statement:包含一个或多个权限声明。
  • Effect:指定是允许(Allow)还是拒绝(Deny)操作。
  • Action:指定允许或拒绝的操作,例如 s3:ListBucket、ec2:StartInstances。
  • Resource:指定操作作用的资源,使用 ARN 格式。

IAM 策略示例

以下是一些使用 ARN 进行权限管理的示例:

允许访问特定 S3 存储桶

  • Action:允许 s3:GetObject 和 s3:PutObject 操作。
  • Resource:指定 my-bucket 存储桶中的所有对象。
json 复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

允许启动和停止特定 EC2 实例

  • Action:允许 ec2:StartInstances 和 ec2:StopInstances 操作。
  • Resource:指定特定的 EC2 实例。
json 复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:us-west-2:123456789012:instance/i-0abcd1234efgh5678"
        }
    ]
}

允许访问特定 DynamoDB 表

  • Action:允许 dynamodb:PutItem 和 dynamodb:GetItem 操作。
  • Resource:指定特定的 DynamoDB 表。
json 复制代码
{
    "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 实例。

ARN 资源引用

在 AWS 中,ARN(Amazon Resource Name)用于唯一标识资源,并在各种服务和操作中引用这些资源。以下是一些常见的 ARN 资源引用场景和示例。

IAM 策略中的资源引用

在 IAM 策略中,可以使用 ARN 来指定哪些资源可以被访问。如上面 ARN 权限管理中的示例

AWS CLI 和 SDK 中的资源引用

在使用 AWS CLI 或 SDK 时,可以使用 ARN 来指定操作的目标资源。

示例:使用 AWS CLI 启动 EC2 实例

bash 复制代码
aws ec2 start-instances --instance-ids arn:aws:ec2:us-west-2:123456789012:instance/i-0abcd1234efgh5678

CloudFormation 模板中的资源引用

在 AWS CloudFormation 模板中,可以使用 ARN 来引用资源。

示例:引用 IAM 角色

json 复制代码
Resources:
  MyInstanceProfile:
    Type: "AWS::IAM::InstanceProfile"
    Properties:
      Roles:
        - arn:aws:iam::123456789012:role/MyRole

Lambda 函数中的资源引用

在 AWS Lambda 函数中,可以使用 ARN 来指定触发器或目标资源。

示例:Lambda 函数触发 S3 事件

json 复制代码
{
  "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"
  }
}

CloudWatch 事件中的资源引用

在 Amazon CloudWatch 事件中,可以使用 ARN 来指定事件目标。

示例:CloudWatch 事件触发 Lambda 函数

json 复制代码
{
  "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"
      }
    ]
  }
}
相关推荐
青云交1 小时前
大数据新视界 --大数据大厂之Kafka消息队列实战:实现高吞吐量数据传输
大数据·kafka·消息队列·高吞吐量·大数据新视界·技术奥秘·应用场景、新兴技术
成都古河云1 小时前
智慧园区:解析集成运维的未来之路
大数据·运维·人工智能·科技·5g·安全
深科信项目申报助手1 小时前
2024年国家高新申报,警惕被退回的情况
大数据·经验分享·科技·其他
lynn-fish1 小时前
蓝卓标杆客户镇洋发展,荣获IDC中国未来企业大奖
大数据·制造·智能制造·数字化·数字化转型·智能工厂·智能化
Gauss松鼠会1 小时前
GaussDB关键技术原理:高弹性(四)
java·大数据·网络·数据库·分布式·gaussdb
仙剑魔尊重楼1 小时前
FL Studio 24.1.1.4285中文破解完整版免费下载FL 2024注册密钥完整版crack百度云安装包下载
云计算·百度云·fl studio·fl studio 21·fl studio 24
字节跳动数据平台2 小时前
火山引擎数智平台:高性能ChatBI的技术解读和落地实践
大数据·大模型·数据可视化·bi
samFuB3 小时前
【更新】上市公司-供应链金融水平数据(2000-2023年)
大数据·金融
风清已存在3 小时前
阿里云OSS与IOT使用详解
物联网·阿里云·云计算
tuantuan_tech4 小时前
开放式耳机哪个好用?开放式耳机好还是入耳式耳机好?
大数据·学习·生活·旅游·智能硬件