Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA

This commit is contained in:
Translator
2025-04-11 00:28:09 +00:00
parent adaf4fa4cf
commit cb20da15e9
5 changed files with 48 additions and 46 deletions

View File

@@ -22,7 +22,7 @@
- 管理邀请
- 对组织内的实体根、OU 或账户)应用政策
- 启用与支持的 AWS 服务的集成,以在组织中的所有账户之间提供服务功能。
- 可以使用用于创建此根账户/组织的电子邮件和密码根用户身份登录。
- 可以使用创建此根账户/组织时使用的电子邮件和密码作为根用户登录。
管理账户具有 **付款账户的责任**,并负责支付所有成员账户产生的费用。您无法更改组织的管理账户。
@@ -55,9 +55,11 @@ SCP 示例:
- 仅允许白名单服务
- 拒绝禁用 GuardDuty、CloudTrail 和 S3 公共阻止访问
- 拒绝删除或修改安全/事件响应角色
- 拒绝安全/事件响应角色被删除或
- 拒绝删除备份
修改
- 拒绝备份被删除。
- 拒绝创建 IAM 用户和访问密钥
在 [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) 中查找 **JSON 示例**
@@ -87,7 +89,7 @@ RCP 示例:
arn:partition:service:region:account-id:resource-type/resource-id
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
```
注意AWS中有4个分区但只有3种调用它们的方法
注意AWS中有4个分区但只有3种调用方式
- AWS Standard: `aws`
- AWS China: `aws-cn`
@@ -106,7 +108,7 @@ IAM可以通过其管理、控制和治理身份对您AWS账户内资源的身
### [AWS账户根用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) <a href="#id_root" id="id_root"></a>
当您首次创建Amazon Web Services (AWS)账户时,您将开始使用一个具有**对所有**AWS服务和资源的**完全访问权限**的单一登录身份。这是AWS账户的_**根用户**_通过使用**您用于创建账户的电子邮件地址和密码**进行登录。
当您首次创建Amazon Web Services (AWS)账户时,您将开始使用一个具有**对账户中所有**AWS服务和资源的**完全访问权限**的单一登录身份。这是AWS账户的_**根用户**_通过使用**您用于创建账户的电子邮件地址和密码**进行登录。
请注意,新创建的**管理员用户**将具有**比根用户更少的权限**。
@@ -161,7 +163,7 @@ IAM [用户组](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)
### [IAM角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
IAM **角色**与**用户**非常**相似**,因为它是一个**具有权限策略的身份,决定它在AWS中可以做什么和不能做什么**。然而,角色**没有任何凭证**(密码或访问密钥)与之关联。角色的设计目的是**可以被任何需要它的人(并且有足够权限)假设**。IAM用户可以假设一个角色以临时**承担特定任务的不同权限**。角色可以分配给使用外部身份提供者而不是IAM登录的[**联合用户**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)。
IAM **角色**与**用户**非常**相似**,因为它是一个**具有权限策略的身份决定它在AWS中可以做什么和不能做什么**。然而,角色**没有任何凭证**(密码或访问密钥)与之关联。角色的设计目的是**可以被任何需要它的人(并且有足够权限)假设**。IAM用户可以假设一个角色以临时**承担特定任务的不同权限**。角色可以分配给使用外部身份提供者而不是IAM登录的[**联合用户**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)。
IAM角色由**两种类型的策略**组成:**信任策略**,不能为空,定义**谁可以假设**该角色,以及**权限策略**,不能为空,定义**它可以访问什么**。
@@ -171,7 +173,7 @@ AWS安全令牌服务STS是一个网络服务促进**临时、有限权
### [IAM中的临时凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) <a href="#id_temp-creds" id="id_temp-creds"></a>
**临时凭证主要与IAM角色一起使用**但也有其他用途。您可以请求具有比标准IAM用户更有限权限集的临时凭证。这**防止**您**意外执行不允许的任务**。临时凭证的一个好处是它们在设定的时间段后会自动过期。您可以控制凭证的有效期。
**临时凭证主要与IAM角色一起使用**但也有其他用途。您可以请求具有比标准IAM用户更有限权限集的临时凭证。这**防止**您**意外执行不被更有限凭证允许的任务**。临时凭证的一个好处是它们在设定的时间段后会自动过期。您可以控制凭证的有效期。
### 策略
@@ -222,7 +224,7 @@ AWS安全令牌服务STS是一个网络服务促进**临时、有限权
### IAM边界
IAM边界可以用来**限制用户或角色应有的权限**。这样,即使通过**不同的策略**授予用户不同的权限,如果他尝试使用它们,操作将**失败**。
IAM边界可以用来**限制用户或角色应有的访问权限**。这样,即使通过**不同的策略**授予用户一组不同的权限,如果他尝试使用它们,操作将**失败**。
边界只是附加到用户的策略,**指示用户或角色可以拥有的最大权限级别**。因此,**即使用户具有管理员访问权限**如果边界指示他只能读取S·桶那就是他能做的最大事情。
@@ -230,9 +232,9 @@ IAM边界可以用来**限制用户或角色应有的权限**。这样,即使
### 会话策略
会话策略是在某种情况下**假设角色时设置的策略**。这将类似于该会话的**IAM边界**:这意味着会话策略不授予权限,而是**将权限限制为策略中指示的权限**(最大权限为角色所拥有的权限)。
会话策略是**在角色被假定时设置的策略**。这将类似于该会话的**IAM边界**:这意味着会话策略不授予权限,而是**将权限限制为策略中指示的权限**(最大权限为角色所拥有的权限)。
这对于**安全措施**非常有用:当管理员要假一个特权很高的角色时,他可以将权限限制为会话策略中指示的权限,以防会话被破坏。
这对于**安全措施**非常有用:当管理员要假一个特权很高的角色时,他可以将权限限制为会话策略中指示的权限,以防会话被破坏。
```bash
aws sts assume-role \
--role-arn <value> \
@@ -240,24 +242,24 @@ aws sts assume-role \
[--policy-arns <arn_custom_policy1> <arn_custom_policy2>]
[--policy <file://policy.json>]
```
注意,默认情况下,**AWS 可能会为即将生成的会话添加会话策略**,这是由于其他原因。例如,在[未经身份验证的 Cognito 假定角色](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles)中默认情况下使用增强身份验证AWS 将生成**带有会话策略的会话凭证**,该策略限制会话可以访问的服务[**为以下列表**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)。
注意,默认情况下,**AWS 可能会将会话策略添加到即将生成的会话中**,这是由于其他原因。例如,在[未经身份验证的 Cognito 假定角色](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles)中默认情况下使用增强身份验证AWS 将生成**带有会话策略的会话凭证**,该策略限制会话可以访问的服务[**为以下列表**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)。
因此,如果在某个时刻遇到错误“...因为没有会话策略允许...”,而角色有权执行该操作,这意味着**有一个会话策略阻止了它**。
因此,如果在某个时刻遇到错误“...因为没有会话策略允许...”,而角色有权执行该操作,那是因为**有一个会话策略阻止了它**。
### 身份联合
身份联合**允许来自外部身份提供者的用户**安全地访问 AWS 资源,而无需提供有效 IAM 用户帐户的 AWS 用户凭证。\
身份提供者的一个例子可以是自己的企业**Microsoft Active Directory**(通过**SAML**)或**OpenID**服务(如**Google**)。联合访问将允许其中的用户访问 AWS。
身份提供者的一个例子可以是自己的企业**Microsoft Active Directory**(通过**SAML**)或**OpenID**服务(如**Google**)。联合访问将允许其中的用户访问 AWS。
要配置信任,生成一个**IAM 身份提供者SAML 或 OAuth**,该提供者将**信任****其他平台**。然后,至少一个**IAM 角色被分配(信任)给身份提供者**。如果来自受信任平台的用户访问 AWS他将以提到的角色进行访问。
要配置这种信任,生成一个**IAM 身份提供者SAML 或 OAuth**,该提供者将**信任****其他平台**。然后,至少一个**IAM 角色被分配(信任)给身份提供者**。如果来自受信任平台的用户访问 AWS他将以提到的角色进行访问。
然而,通常希望根据第三方平台中用户的**组别给予不同的角色**。然后,多个**IAM 角色可以信任**第三方身份提供者,第三方平台将允许用户假定一个角色或另一个角色。
然而,通常你会希望根据第三方平台中用户的**组别给予不同的角色**。然后,多个**IAM 角色可以信任**第三方身份提供者,第三方平台将允许用户假定一个角色或另一个角色。
<figure><img src="../../../images/image (247).png" alt=""><figcaption></figcaption></figure>
### IAM 身份中心
AWS IAM 身份中心AWS 单点登录的继任者)扩展了 AWS 身份和访问管理IAM的功能提供一个**中位置**,将**用户及其对 AWS** 户和云应用程序的访问管理汇集在一起。
AWS IAM 身份中心AWS 单点登录的继任者)扩展了 AWS 身份和访问管理IAM的功能提供一个**中位置**,将**用户及其对 AWS** 户和云应用程序的访问管理汇集在一起。
登录域将类似于 `<user_input>.awsapps.com`
@@ -269,19 +271,19 @@ AWS IAM 身份中心AWS 单点登录的继任者)扩展了 AWS 身份和访
<figure><img src="../../../images/image (279).png" alt=""><figcaption></figcaption></figure>
在身份中心目录的最简单情况下,**身份中心将拥有用户和组的列表**,并能够**为他们分配策略**到**组织的任何户**。
在身份中心目录的最简单情况下,**身份中心将拥有用户和组的列表**,并能够**为他们分配策略**到**组织的任何户**。
为了给身份中心用户/组对帐户的访问,将创建一个**信任身份中心的 SAML 身份提供者**,并在目标户中创建一个**信任身份提供者并有指示策略的角色**。
为了给身份中心用户/组访问一个账户,将创建一个**信任身份中心的 SAML 身份提供者**,并在目标户中创建一个**信任身份提供者并有指示策略的角色**。
#### AwsSSOInlinePolicy
可以通过**IAM 身份中心创建的角色的内联策略**授予权限。在被授予**AWS 身份中心内联策略**的户中创建的角色将具有名为**`AwsSSOInlinePolicy`**的内联策略中的这些权限。
可以通过**内联策略向通过 IAM 身份中心创建的角色授予权限**。在被授予**AWS 身份中心内联策略**的户中创建的角色将具有名为**`AwsSSOInlinePolicy`**的内联策略中的这些权限。
因此,即使看到两个有名为**`AwsSSOInlinePolicy`**的内联策略的角色,也**并不意味着它们具有相同的权限**。
因此,即使看到两个有名为**`AwsSSOInlinePolicy`**的内联策略的角色,也**并不意味着它们具有相同的权限**。
### 跨账户信任和角色
**用户**(信任)可以创建一个带有某些策略的跨账户角色,然后**允许另一个用户**(受信任)**访问他的户**,但仅**具有新角色策略中指示的访问权限**。要创建此角色,只需创建一个新角色并选择跨账户角色。跨账户访问角色提供两个选项。提供拥有的 AWS 账户之间的访问,以及提供拥有的账户与第三方 AWS 账户之间的访问。\
**用户**(信任)可以创建一个带有某些策略的跨账户角色,然后**允许另一个用户**(受信任)**访问他的户**,但仅限于**新角色策略中指示的访问权限**。要创建此角色,只需创建一个新角色并选择跨账户角色。跨账户访问角色提供两个选项。提供拥有的 AWS 账户之间的访问,以及提供拥有的账户与第三方 AWS 账户之间的访问。\
建议**指定被信任的用户,而不是放置一些通用内容**,因为如果不这样做,其他经过身份验证的用户(如联合用户)也可能滥用此信任。
### AWS Simple AD
@@ -292,24 +294,24 @@ AWS IAM 身份中心AWS 单点登录的继任者)扩展了 AWS 身份和访
- AD 管理中心
- 完整的 PS API 支持
- AD 回收站
- 组托管服务
- 组托管服务
- 架构扩展
- 无法直接访问操作系统或实例
#### Web 联合或 OpenID 身份验证
该应用程序使用 AssumeRoleWithWebIdentity 创建临时凭证。然而,这并不授予 AWS 控制台的访问,仅授予对 AWS 内部资源的访问。
该应用程序使用 AssumeRoleWithWebIdentity 创建临时凭证。然而,这并不授予访问 AWS 控制台的权限,仅授予对 AWS 内部资源的访问。
### 其他 IAM 选项
- 可以**设置密码策略设置**选项,如最小长度和密码要求。
- 可以**下载“凭证报告”**,其中包含有关当前凭证的信息(如用户创建时间、密码是否启用等)。可以每**四小时**生成一次凭证报告。
- 可以**设置密码策略设置**选项,如最小长度和密码要求。
- 可以**下载“凭证报告”**,其中包含有关当前凭证的信息(如用户创建时间、密码是否启用等)。可以每**四小时**生成一次凭证报告。
AWS 身份和访问管理IAM提供**细粒度的访问控制**,覆盖所有 AWS。使用 IAM可以指定**谁可以访问哪些服务和资源**,以及在什么条件下。通过 IAM 策略,管理对的员工和系统的权限,以**确保最小权限**。
AWS 身份和访问管理IAM提供**细粒度的访问控制**,覆盖所有 AWS。使用 IAM可以指定**谁可以访问哪些服务和资源**,以及在什么条件下。通过 IAM 策略,管理对的员工和系统的权限,以**确保最小权限**。
### IAM ID 前缀
在[**此页面**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)中,可以找到根据其性质的键的**IAM ID 前缀**
在[**此页面**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)中,可以找到根据其性质的键的**IAM ID 前缀**
| 标识符代码 | 描述 |
| --------------- | ----------------------------------------------------------------------------------------------------------- |
@@ -344,9 +346,9 @@ AWS 身份和访问管理IAM提供**细粒度的访问控制**,覆盖所
### CLI 身份验证
为了让常规用户通过 CLI 认证到 AWS需要有**本地凭证**。默认情况下,可以在 `~/.aws/credentials` 中**手动**配置它们,或通过**运行** `aws configure`。\
在该文件中,可以有多个配置文件,如果使用**aws cli**时**未指定配置文件**,则将使用该文件中名为**`[default]`**的配置文件。\
有多个配置文件的凭证文件示例:
为了让常规用户通过 CLI 认证到 AWS需要有**本地凭证**。默认情况下,可以在 `~/.aws/credentials` 中**手动**配置它们,或通过**运行** `aws configure`。\
在该文件中,可以有多个配置文件,如果使用**aws cli**时**未指定配置文件**,则将使用该文件中名为**`[default]`**的配置文件。\
有多个配置文件的凭证文件示例:
```
[default]
aws_access_key_id = AKIA5ZDCUJHF83HDTYUT
@@ -357,7 +359,7 @@ aws_access_key_id = AKIA8YDCu7TGTR356SHYT
aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7
region = eu-west-2
```
如果您需要访问**不同的AWS账户**,并且您的配置文件被授予访问**在这些账户内假设角色**的权限您不需要每次手动调用STS`aws sts assume-role --role-arn <role-arn> --role-session-name sessname`)并配置凭证。
如果您需要访问**不同的AWS账户**,并且您的配置文件被授予访问**在这些账户内假设角色**的权限,您不需要每次手动调用STS`aws sts assume-role --role-arn <role-arn> --role-session-name sessname`)并配置凭证。
您可以使用`~/.aws/config`文件来[**指示要假设的角色**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html),然后像往常一样使用`--profile`参数(`assume-role`将以透明的方式为用户执行)。\
配置文件示例:
@@ -377,7 +379,7 @@ aws --profile acc2 ...
#### 自动化临时凭证
如果您正在利用一个生成临时凭证的应用程序,每隔几分钟在终端中更新它们可能会很麻烦,因为它们会过期。可以通过在配置文件中使用 `credential_process` 指令来解决此问题。例如,如果您有一些易受攻击的网络应用程序,您可以这样做:
如果您正在利用一个生成临时凭证的应用程序,每隔几分钟在终端中更新它们可能会很麻烦。可以通过在配置文件中使用 `credential_process` 指令来解决此问题。例如,如果您有一些易受攻击的网络应用程序,您可以这样做:
```toml
[victim]
credential_process = curl -d 'PAYLOAD' https://some-site.com

View File

@@ -12,7 +12,7 @@
### CDK Bootstrap Stack
AWS CDK 部署一个名为 `CDKToolkit` 的 CFN 堆栈。该堆栈支持一个参数 `TrustedAccounts`,允许外部账户将 CDK 项目部署到受害者账户中。攻击者可以利用这一点,通过使用 AWS cli 重新部署带参数的堆栈,或使用 AWS CDK cli 来授予自己对受害者账户的无限访问权限
AWS CDK 部署一个名为 `CDKToolkit` 的 CFN 堆栈。该堆栈支持一个参数 `TrustedAccounts`,允许外部账户将 CDK 项目部署到受害者账户中。攻击者可以利用这一点授予自己对受害者账户的无限访问权限,方法是使用 AWS cli 重新部署带参数的堆栈,或使用 AWS CDK cli。
```bash
# CDK
cdk bootstrap --trust 1234567890

View File

@@ -4,7 +4,7 @@
## Lambda
更多信息请查看:
有关更多信息请查看:
{{#ref}}
../../aws-services/aws-lambda-enum.md
@@ -12,21 +12,21 @@
### 提取 Lambda 凭证
Lambda 使用环境变量在运行时注入凭证。如果你能访问它们(通过读取 `/proc/self/environ` 或使用易受攻击的函数本身),可以自己使用它们。它们位于默认变量名 `AWS_SESSION_TOKEN``AWS_SECRET_ACCESS_KEY``AWS_ACCESS_KEY_ID` 中。
Lambda 使用环境变量在运行时注入凭证。如果您可以访问它们(通过读取 `/proc/self/environ` 或使用易受攻击的函数本身),可以自己使用它们。它们位于默认变量名 `AWS_SESSION_TOKEN``AWS_SECRET_ACCESS_KEY``AWS_ACCESS_KEY_ID` 中。
默认情况下,这些将有权写入一个 cloudwatch 日志组(其名称存储在 `AWS_LAMBDA_LOG_GROUP_NAME` 中),以及创建任意日志组,然而 lambda 函数通常根据其预期用途分配更多权限。
默认情况下,这些将有权写入 CloudWatch 日志组(其名称存储在 `AWS_LAMBDA_LOG_GROUP_NAME` 中),以及创建任意日志组,然而Lambda 函数通常根据其预期用途分配更多权限。
### 偷取其他用户的 Lambda URL 请求
### 偷取其他 Lambda URL 请求
如果攻击者以某种方式在 Lambda 内部获得 RCE他将能够窃取其他用户对 lambda 的 HTTP 请求。如果请求包含敏感信息cookies、凭证等他将能够窃取它们。
如果攻击者以某种方式在 Lambda 内部获得 RCE他将能够窃取其他用户对 Lambda 的 HTTP 请求。如果请求包含敏感信息cookies、凭证等他将能够窃取它们。
{{#ref}}
aws-warm-lambda-persistence.md
{{#endref}}
### 偷取其他用户的 Lambda URL 请求和扩展请求
### 偷取其他 Lambda URL 请求和扩展请求
滥用 Lambda Layers 也可以滥用扩展并在 lambda 中持久化,同时窃取和修改请求。
滥用 Lambda Layers 也可以滥用扩展并在 Lambda 中持久化,同时窃取和修改请求。
{{#ref}}
../../aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md

View File

@@ -43,7 +43,7 @@ aws cloudformation update-stack \
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
如果你拥有这个权限但 **没有 `iam:PassRole`**,你仍然可以 **更新使用的堆栈** 并滥用 **它们已经附加的 IAM 角色**。查看前面的部分以获取利用示例(只需在更新中不指明任何角色)。
如果你拥有这个权限但 **没有 `iam:PassRole`**,你仍然可以 **更新使用的堆栈** 并滥用 **它们已经附加的 IAM 角色**。查看前面的部分以获取利用示例(只需在更新中不指明任何角色)。
`cloudformation:SetStackPolicy` 权限可以用来 **给自己 `UpdateStack` 权限** 以便对一个堆栈进行攻击。
@@ -81,11 +81,11 @@ aws cloudformation describe-stacks \
```
`cloudformation:SetStackPolicy` 权限可以用来 **给自己 `ChangeSet` 权限** 以便对堆栈执行攻击。
**潜在影响:** 提升到 cloudformation 服务角色。
**潜在影响:** cloudformation 服务角色的权限提升
### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
这与之前的方法类似,不需要传递 **IAM 角色**所以你可以 **滥用已经附加的角色**,只需修改参数:
这与之前的方法类似,不需要传递 **IAM 角色**因此你可以 **滥用已经附加的角色**,只需修改参数:
```
--change-set-type UPDATE
```
@@ -107,9 +107,9 @@ aws cloudformation describe-stacks \
AWS cdk 是一个工具包允许用户使用他们已经熟悉的语言定义基础设施即代码并轻松重用部分代码。然后CDK 将高级代码(即 python转换为 Cloudformation 模板yaml 或 json
为了使用 CDK管理员用户必须首先引导账户这会创建几个 IAM 角色,包括具有 \*/\* 权限的 *exec role*。这些角色遵循命名结构 `cdk-<qualifier>-<name>-<account-id>-<region>`。每个账户每个区域必须引导一次。
为了使用 CDK管理员用户必须首先引导账户这会创建几个 IAM 角色,包括具有 \*/\* 权限的 *exec role*。这些角色遵循命名结构 `cdk-<qualifier>-<name>-<account-id>-<region>`引导必须在每个账户每个区域执行一次。
默认情况下CDK 用户无法访问列出使用 CDK 所需的角色,这意味着您需要手动确定它们。如果您入侵了开发者的机器或某个 CI/CD 节点,这些角色可以被假设以授予您部署 CFN 模板的能力,使用 `cfn-exec` 角色允许 CFN 部署任何资源,完全控制账户。
默认情况下CDK 用户没有权限列出使用 CDK 所需的角色,这意味着您需要手动确定它们。如果您入侵了开发者的机器或某个 CI/CD 节点,这些角色可以被假设以授予您部署 CFN 模板的能力,使用 `cfn-exec` 角色允许 CFN 部署任何资源,完全控制账户。
### 确定角色名称

View File

@@ -4,7 +4,7 @@
## CloudFormation
AWS CloudFormation 是一个旨在 **简化 AWS 资源管理** 的服务。它使用户能够更多地关注在 AWS 上运行的应用程序,通过 **减少在资源管理上花费的时间**。该服务的核心功能是 **模板**——所需 AWS 资源的描述模型。一旦提供了这个模板CloudFormation 就负责指定资源的 **供应和配置**。这种自动化促进了更高效和无错误的 AWS 基础设施管理。
AWS CloudFormation 是一个旨在 **简化 AWS 资源管理** 的服务。它使用户能够更多地专注于在 AWS 上运行的应用程序,通过 **减少在资源管理上花费的时间**。该服务的核心功能是 **模板**——所需 AWS 资源的描述模型。一旦提供了这个模板CloudFormation 就负责指定资源的 **供应和配置**。这种自动化促进了更高效和无错误的 AWS 基础设施管理。
### Enumeration
```bash