

# Amazon RDS 的 Identity and Access Management
<a name="UsingWithRDS.IAM"></a>





Amazon Identity and Access Management（IAM）是一项 Amazon Web Services 服务，可以帮助管理员安全地控制对 Amazon 资源的访问。IAM 管理员控制谁可以*通过身份验证*（登录）和*获得授权*（具有权限）以使用 Amazon RDS 资源。IAM 是一项无需额外费用即可使用的 Amazon Web Services 服务。

**Topics**
+ [受众](#security_iam_audience)
+ [使用身份进行身份验证](#security_iam_authentication)
+ [使用策略管理访问](#security_iam_access-manage)
+ [Amazon RDS 如何与 IAM 协同工作](security_iam_service-with-iam.md)
+ [Amazon RDS 的基于身份的策略示例](security_iam_id-based-policy-examples.md)
+ [Amazon适用于 Amazon RDS 的 托管式策略](rds-security-iam-awsmanpol.md)
+ [Amazon 托管式策略的 Amazon RDS 更新](rds-manpol-updates.md)
+ [防范跨服务混淆代理问题](cross-service-confused-deputy-prevention.md)
+ [适用于 MariaDB、MySQL 和 PostgreSQL 的IAM 数据库身份验证](UsingWithRDS.IAMDBAuth.md)
+ [对 Amazon RDS 身份和访问权限问题进行故障排除](security_iam_troubleshoot.md)

## 受众
<a name="security_iam_audience"></a>

如何使用 Amazon Identity and Access Management (IAM) 因您在 Amazon RDS 中执行的操作而异。

**服务用户** – 如果您使用 Amazon RDS 服务来完成作业，则您的管理员会为您提供所需的凭证和权限。当您使用更多 Amazon RDS 功能来完成工作时，您可能需要额外权限。了解如何管理访问权限可帮助您向管理员请求适合的权限。如果您无法访问 Amazon RDS 中的一项功能，请参阅[对 Amazon RDS 身份和访问权限问题进行故障排除](security_iam_troubleshoot.md)。

**服务管理员** – 如果您在公司负责管理 Amazon RDS 资源，则您可能具有 Amazon RDS 的完全访问权限。您有责任确定您的员工应访问哪些 Amazon RDS 功能和资源。然后，您必须向 管理员提交请求，这样才能更改您的服务用户的权限。请查看该页面上的信息以了解 IAM 的基本概念。要了解有关您的公司如何将 IAM 与 Amazon RDS 搭配使用的更多信息，请参阅[Amazon RDS 如何与 IAM 协同工作](security_iam_service-with-iam.md)。

**管理员** – 如果您是管理员，您可能希望了解有关您可以如何编写策略以管理 Amazon RDS 的访问权限的详细信息。要查看您可在 IAM 中使用的基于身份的 Amazon RDS 示例策略，请参阅[Amazon RDS 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## 使用身份进行身份验证
<a name="security_iam_authentication"></a>

身份验证是您使用身份凭证登录 Amazon 的方法。您必须作为 Amazon Web Services 账户根用户、IAM 用户或通过代入 IAM 角色进行身份验证。

对于编程访问，Amazon 提供了 SDK 和 CLI 来对请求进行加密签名。有关更多信息，请参阅《IAM 用户指南》**中的[适用于 API 请求的 Amazon 签名版本 4](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_sigv.html)。

### Amazon 账户根用户
<a name="security_iam_authentication-rootuser"></a>

 当您创建 Amazon Web Services 账户时，最初使用的是一个对所有 Amazon Web Services 服务和资源拥有完全访问权限的登录身份（称为 Amazon Web Services 账户*根用户*）。强烈建议您不要使用根用户执行日常任务。有关需要根用户凭证的任务，请参阅《IAM 用户指南》**中的[需要根用户凭证的任务](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 联合身份
<a name="security_iam_authentication-federatedidentity"></a>

作为最佳实践，请要求人类用户必须使用带有身份提供者的联合身份验证才能使用临时凭证访问 Amazon Web Services 服务。

*联合身份*是来自企业目录、Web 身份提供者的用户，或 Amazon Directory Service 中的用户（这些用户使用来自身份源的凭证访问 Amazon Web Services 服务）。联合身份代入可提供临时凭证的角色。

### IAM 用户和群组
<a name="security_iam_authentication-iamuser"></a>

*[IAM 用户](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_users.html)*是对单个人员或应用程序具有特定权限的身份。我们建议使用临时凭证，而非具有长期凭证的 IAM 用户。有关更多信息，请参阅《IAM 用户指南》中的[要求人类用户使用带有身份提供商的联合身份验证才能使用临时凭证访问 Amazon](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)**。

[https://docs.amazonaws.cn/IAM/latest/UserGuide/id_groups.html](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_groups.html)指定一组 IAM 用户，便于对大量用户进行权限管理。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 用户的使用案例](https://docs.amazonaws.cn/IAM/latest/UserGuide/gs-identities-iam-users.html)。

可以使用 IAM 数据库身份验证对数据库实例进行身份验证。

IAM 数据库身份验证使用以下数据库引擎：
+ RDS for MariaDB
+ RDS for MySQL
+ RDS for PostgreSQL

有关使用 IAM 对数据库实例进行身份验证的更多信息，请参阅 [适用于 MariaDB、MySQL 和 PostgreSQL 的IAM 数据库身份验证](UsingWithRDS.IAMDBAuth.md)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*[IAM 角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles.html)*是 Amazon Web Services 账户中具有特定权限的身份。它类似于用户，但未与特定人员关联。您可以通过[切换角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)，在 Amazon Web Services 管理控制台 中暂时代入 IAM 角色。您可以调用 Amazon CLI 或 Amazon API 操作或使用自定义网址以担任角色。有关使用角色的方法的更多信息，请参阅《IAM 用户指南》中的[使用 IAM 角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_use.html)**。

具有临时凭证的 IAM 角色在以下情况下很有用：
+ **临时用户权限** – 用户可代入 IAM 角色，暂时获得针对特定任务的不同权限。
+ **联合用户访问**：要向联合身份分配权限，请创建角色并为角色定义权限。当联合身份进行身份验证时，该身份将与角色相关联并被授予由此角色定义的权限。有关用于联合身份验证的角色的信息，请参阅《IAM 用户指南》**中的[针对第三方身份提供者创建角色（联合身份验证）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-idp.html)。
+ **跨账户访问**：您可以使用 IAM 角色以允许不同账户中的某个人（可信主体）访问您的账户中的资源。角色是授予跨账户访问权限的主要方式。但是，对于某些 Amazon Web Services 服务，您可以将策略直接附加到资源（而不是使用角色作为代理）。要了解用于跨账户访问的角色和基于资源的策略之间的差别，请参阅*《IAM 用户指南》*中的 [IAM 角色与基于资源的策略有何不同](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_compare-resource-policies.html)。
+ **跨服务访问**：某些 Amazon Web Services 服务使用其它 Amazon Web Services 服务中的特征。例如，当您在某个服务中进行调用时，该服务通常会在 Amazon EC2 中运行应用程序或在 Simple Storage Service（Amazon S3）中存储对象。服务可能会使用发出调用的主体的权限、使用服务角色或使用服务相关角色来执行此操作。
  + **转发访问会话** – 转发访问会话（FAS）使用调用 Amazon Web Services 服务 的主体的权限，与发出请求的 Amazon Web Services 服务 结合，来向下游服务发出请求。有关发出 FAS 请求时的策略详情，请参阅[转发访问会话](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_forward_access_sessions.html)。
  + **服务角色** - 服务角色是服务代表您在您的账户中执行操作而分派的 [IAM 角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 Amazon Web Services 服务委派权限的角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-service.html)。
  + **服务相关角色**：服务相关角色是与 Amazon Web Services 服务 关联的一种服务角色。服务可以代入代表您执行操作的角色。服务相关角色显示在您的 Amazon Web Services 账户 中，并由该服务拥有。IAM 管理员可以查看但不能编辑服务相关角色的权限。
+ **在 Amazon EC2 上运行的应用程序**：您可以使用 IAM 角色管理在 EC2 实例上运行并发出 Amazon CLI 或 Amazon API 请求的应用程序的临时凭证。这优先于在 EC2 实例中存储访问密钥。要将 Amazon 角色分配给 EC2 实例并使其对该实例的所有应用程序可用，您可以创建一个附加到实例的实例配置文件。实例配置文件包含角色，并使 EC2 实例上运行的程序能够获得临时凭证。有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM 角色向在 Amazon EC2 实例上运行的应用程序授予权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。

要了解是否使用 IAM 角色，请参阅 *IAM 用户指南* 中的[何时创建 IAM 角色（而不是用户）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id.html#id_which-to-choose_role)。

## 使用策略管理访问
<a name="security_iam_access-manage"></a>

您将创建策略并将其附加到 IAM 身份或 Amazon 资源，以便控制 Amazon 中的访问。策略是 Amazon 中的对象；在与身份或资源相关联时，策略定义其权限。在某个实体（根用户、用户或 IAM 角色）发出请求时，Amazon 将评估这些策略。策略中的权限确定是允许还是拒绝请求。大多数策略在 Amazon 中存储为 JSON 文档。有关 JSON 策略文档的结构和内容的更多信息，请参阅 *IAM 用户指南*中的 [JSON 策略概览](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员可以使用策略来指定哪些用户有权访问 Amazon 资源，以及他们可以对这些资源执行哪些操作。每个 IAM 实体（权限集或角色）最初没有任何权限。换言之，预设情况下，用户什么都不能做，甚至不能更改他们自己的密码。要为用户授予执行某些操作的权限，管理员必须将权限策略附加到用户。或者，管理员可以将用户添加到具有预期权限的组中。当管理员为某个组授予访问权限时，该组内的全部用户都会获得这些访问权限。

IAM 策略定义操作的权限，无关乎您使用哪种方法执行操作。例如，假设您有一个允许 `iam:GetRole` 操作的策略。具有该策略的用户可以从 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon API 获取角色信息。

### 基于身份的策略
<a name="security_iam_access-manage-id-based-policies"></a>

基于身份的策略是可附加到身份（如权限集或角色）的 JSON 权限策略文档。这些策略控制身份可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略，请参阅 *IAM 用户指南*中的[创建 IAM policy](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以进一步归类为*内联策略*或*托管策略*。内联策略直接嵌入到单个权限集或角色中。托管式策略是可以附加到 Amazon 账户中的多个权限集和角色的独立策略。托管式策略包括 Amazon 托管式策略和客户管理型策略。要了解如何在托管式策略和内联策略之间进行选择，请参阅 *IAM 用户指南*中的[在托管式策略与内联策略之间进行选择](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#choosing-managed-or-inline)。

有关特定于 Amazon RDS 的 Amazon 托管式策略的信息，请参阅[Amazon适用于 Amazon RDS 的 托管式策略](rds-security-iam-awsmanpol.md)。

### 其他策略类型
<a name="security_iam_access-manage-other-policies"></a>

Amazon 支持额外的、不太常用的策略类型。这些策略类型可以设置更常用的策略类型向您授予的最大权限。
+ **权限边界** – 权限边界是一项高级功能，借助该功能，您可以设置基于身份的策略可以授予 IAM 实体（权限集或角色）的最大权限。您可为实体设置权限边界。这些结果权限是实体的基于身份的策略及其权限边界的交集。在 `Principal` 字段中指定权限集或角色的基于资源的策略不受权限边界限制。任一项策略中的显式拒绝将覆盖允许。有关权限边界的更多信息，请参阅 *IAM 用户指南*中的 [IAM 实体的权限边界](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服务控制策略 (SCP) ** – SCP 是 JSON 策略，指定了组织或组织单位 (OU) 在 Amazon Organizations 中的最大权限。Amazon Organizations 是一项服务，用于分组和集中管理您的企业拥有的多个 Amazon 账户。如果在组织内启用了所有特征，则可对任意或全部账户应用服务控制策略（SCP）。SCP 限制成员账户中实体（包括每个 Amazon Web Services 账户根用户）的权限。有关 Organizations 和 SCP 的更多信息，请参阅《Amazon Organizations 用户指南》**中的 [SCP 的工作原理](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_about-scps.html)。
+ **会话策略** – 会话策略是当您以编程方式为角色或联合用户创建临时会话时作为参数传递的高级策略。结果会话的权限是权限集或角色的基于身份的策略和会话策略的交集。权限也可以来自基于资源的策略。任一项策略中的显式拒绝将覆盖允许。有关更多信息，请参阅 *IAM 用户指南*中的[会话策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多个策略类型
<a name="security_iam_access-manage-multiple-policies"></a>

当多个类型的策略应用于一个请求时，生成的权限更加复杂和难以理解。要了解 Amazon 如何确定在涉及多种策略类型时是否允许请求，请参阅 *IAM 用户指南*中的[策略评测逻辑](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。