@@ -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