

# 比较 IAM 身份和凭证
<a name="introduction_identity-management"></a>

Amazon Identity and Access Management 中管理的身份是 IAM 用户、IAM 角色和 IAM 组。这些是 Amazon 与 Amazon Web Services 账户 一起创建的根用户之外的身份。

强烈建议您不使用根用户执行日常任务，即使是管理任务。相反，可以预置其他用户并授予他们执行必要任务所需的权限。可以通过如下方式添加用户：将人员添加到 IAM Identity Center 目录，将外部身份提供商与 IAM Identity Center 或 IAM 联合，或者创建最低权限 IAM 用户。

**重要**  
在北京和宁夏区域，没有根用户的概念。所有用户都是 IAM 用户，包括创建 Amazon 账户的用户。

为了获得额外的安全性，我们建议集中根访问，以帮助您集中保护使用 Amazon Organizations 管理的 Amazon Web Services 账户 的根用户凭证。[集中管理成员账户的根访问权限](id_root-user.md#id_root-user-access-management) 允许您集中移除和防止长期的根用户凭证恢复，从而防止大规模的意外根访问。启用集中根访问后，您可以假设一个特权会话，以对成员账户执行操作。

设置用户之后，您可以授予特定人员对 Amazon Web Services 账户 的访问权限，并为他们提供访问资源的权限。

作为[最佳实践](best-practices.md)，Amazon 建议您要求人类用户担任 IAM 角色访问 Amazon，从而他们可使用临时凭证。如果您在 IAM Identity Center 目录中管理身份，或者使用与身份提供商的联合身份验证，则应遵循最佳实践。

## 术语
<a name="intro-structure-terms"></a>

通常在使用 IAM 身份时使用这些术语：

**IAM 资源**  
IAM 服务存储以下资源。您可以在控制台中添加、编辑和移除它们。  
+ IAM 用户
+ IAM 组
+ IAM 角色
+ 权限策略
+ 身份提供者对象

**IAM 实体**  
Amazon 用于身份验证的 IAM 资源。在基于资源的策略中指定该实体作为主体。  
+ IAM 用户
+ IAM 角色

**IAM 身份**  
在策略中授权执行操作和访问资源的 IAM 资源。身份包括 IAM 用户、IAM 组和 IAM 角色。  
  

![\[此图显示 IAM 用户和 IAM 角色是既是实体也是身份的主体，但根用户是既不是实体也不是身份的主体。此图还告知您 IAM 组是身份。IAM 身份验证使用策略控制身份的访问权限，但根用户拥有完全 Amazon 资源访问权限，并且不受基于身份或资源的 IAM 策略的限制。\]](http://docs.amazonaws.cn/IAM/latest/UserGuide/images/iam-terms-2.png)


**主体**  
可对 Amazon 资源发出操作请求的 Amazon Web Services 账户根用户、IAM 用户或 IAM 角色。主体包括人类用户、工作负载、联合主体和担任的角色。在身份验证后，IAM 会根据主体类型授予主体永久或临时凭证，以向 Amazon 发出请求。  
*人类用户*也称为*人类身份*，例如应用程序的人员、管理员、开发人员、操作员和使用者。  
*工作负载*是可提供商业价值的一系列资源和代码，例如应用程序、过程、操作工具和其他组件。  
*联合主体*是指其身份和凭证由其他身份提供者（例如 Active Directory、Okta 或 Microsoft Entra）管理的用户。  
*IAM 角色*是可在账户中创建的 IAM 身份，该身份具有特定权限，可确定该身份可执行和不可执行的操作。但是，角色旨在让需要它的任何人代入，而不是唯一地与某个人员关联。  
IAM 可向 IAM 用户和根用户授予长期凭证和 IAM 角色临时凭证。Amazon IAM Identity Center 中的用户、OIDC 和 SAML 联合主体登录 Amazon 后将担任 IAM 角色，获得其授予的临时凭证。作为[最佳实践](best-practices.md)，我们建议您要求人类用户和工作负载使用临时凭证访问 Amazon 资源。

## IAM 用户和 IAM Identity Center 中用户之间的区别
<a name="intro-identity-users"></a>

 **IAM 用户**不是单独的账户；他们是您账户中的个人用户。每个用户都可以有自己的密码可用于访问 Amazon Web Services 管理控制台。您还可以为每个用户创建单独的访问密钥，以便用户可以发出编程请求以使用账户中的资源。

IAM 用户及其访问密钥将拥有 Amazon 资源的长期凭证。IAM 用户的主要用途是使无法使用 IAM 角色的工作负载能够使用 API 或 CLI 向 Amazon 服务发出编程请求。

**注意**  
对于需要具有编程访问权限和长期凭证的 IAM 用户的场景，我们建议在需要时更新访问密钥。有关更多信息，请参阅 [更新访问密钥](id-credentials-access-keys-update.md)。

员工身份（人员）是 **Amazon IAM Identity Center 中的用户**，其根据所执行的角色具有不同的权限需求，并且可以在组织内的各种 Amazon Web Services 账户 中工作。如果您的用例需要访问密钥，则可以使用 Amazon IAM Identity Center 中的用户 支持这些应用场景。通过 Amazon Web Services 访问门户登录的人员可以使用 Amazon 资源的短期凭证获取访问密钥。对于集中式访问权限管理，我们建议使用 [Amazon IAM Identity Center（IAM Identity Center）](https://docs.amazonaws.cn/singlesignon/latest/userguide/getting-started.html)来管理对您账户的访问权限以及这些账户中的其他权限。IAM Identity Center 会自动配置 Identity Center 目录作为您的默认身份源，您可以在其中添加人员和组，并分配其对您 Amazon 资源的访问级别。有关更多信息，请参阅《[Amazon IAM Identity Center 用户指南](https://docs.amazonaws.cn/singlesignon/latest/userguide/what-is.html)》中的*什么是 Amazon IAM Identity Center*。

这两种类型用户之间的主要区别在于，IAM Identity Center 中的用户在登录 Amazon 时会自动担任 IAM 角色，然后才能访问管理控制台或 Amazon 资源。每次用户登录 Amazon 时，IAM 角色都会授予临时凭证。对于使用 IAM 角色登录的 IAM 用户，其必须具有担任和切换角色的权限，并且必须在访问 Amazon 账户后显式选择切换到其想要担任的角色。

## 现有身份源的联合用户
<a name="intro-identity-federation"></a>

如果您组织中的用户在登录到公司网络时已通过身份验证，则不必为其创建单独的 IAM 用户或 IAM Identity Center 中的用户。相反，您可以使用 IAM 或 Amazon IAM Identity Center 将这些用户身份*联合*到 Amazon 中。OIDC 和 SAML 联合主体将担任 IAM 角色，该角色授予其访问特定资源的权限。有关角色的更多信息，请参阅 [角色术语和概念](id_roles.md#id_roles_terms-and-concepts)。

![\[此图显示联合主体如何获取临时 Amazon 安全凭证以访问 Amazon Web Services 账户中的资源。\]](http://docs.amazonaws.cn/IAM/latest/UserGuide/images/iam-intro-federation.diagram.png)


联合身份验证在以下情况尤其有用：
+ **您的用户已存在于公司目录中。**

  如果您的公司目录与安全断言标记语言 2.0 (SAML 2.0) 兼容，则可以配置公司目录以便为用户提供对 Amazon Web Services 管理控制台的单一登录 (SSO) 访问。有关更多信息，请参阅 [临时凭证的常见情形](id_credentials_temp.md#sts-introduction)。

  如果您的公司目录与 SAML 2.0 不兼容，则可以创建身份凭证代理程序应用程序以便为用户提供对 Amazon Web Services 管理控制台 的单点登录（SSO）访问。有关更多信息，请参阅 [使自定义身份凭证代理程序能够访问 Amazon 控制台](id_roles_providers_enable-console-custom-url.md)。

  如果您的公司目录是 Microsoft Active Directory，则可以使用 Amazon IAM Identity Center 连接 Active Directory 中的自我管理目录或 [Amazon Directory Service](https://www.amazonaws.cn/directoryservice/) 中的目录，以便在公司目录与您 Amazon Web Services 账户 之间建立信任。

  如果您使用外部身份提供者（IdP）（例如 Okta 或 Microsoft Entra）管理用户，则可以使用 Amazon IAM Identity Center 在 IdP 和 Amazon Web Services 账户 之间建立信任。有关更多信息，请参阅《Amazon IAM Identity Center 用户指南》**中的[连接到外部身份提供者](https://docs.amazonaws.cn/singlesignon/latest/userguide/manage-your-identity-source-idp.html)。
+ **您的用户已有 Internet 身份。**

  如果您创建的移动应用程序或基于 Web 的应用程序可以允许用户通过 Internet 身份提供商 (如 Login with Amazon、Facebook、Google 或任何与 OpenID Connect (OIDC) 兼容的身份提供商) 标识自己，则应用程序可以使用联合访问 Amazon。有关更多信息，请参阅 [OIDC 联合身份验证](id_roles_providers_oidc.md)。
**提示**  
要使用与 Internet 身份提供商的联合身份，我们建议使用 [Amazon Cognito](https://docs.amazonaws.cn/cognito/latest/developerguide/what-is-amazon-cognito.html)。

## 提供用户访问权限的不同方法
<a name="AccessControlMethods"></a>

以下是可以提供您的 Amazon 资源访问权限的几种方式。


****  

| 用户访问类型 | 何时使用？ | 哪里有更多信息？ | 
| --- | --- | --- | 
|  使用 IAM Identity Center 为人员（例如您的员工用户）提供 Amazon 资源的单点登录访问权限  |  IAM Identity Center 提供了一个集中位置，将用户的管理及其对 Amazon Web Services 账户 和云应用程序的访问汇集在一起。 您可以在 IAM Identity Center 中设置身份存储，也可以与现有身份提供者（IdP）一起配置联合身份验证。安全最佳实践建议向人类用户授予 Amazon 资源的有限凭证。 人员可以获得更简单的登录体验，并且您可以控制其通过单个系统访问资源。IAM Identity Center 支持多重身份验证（MFA），以提高账户的安全性。  |  有关设置 IAM Identity Center 的更多信息，请参阅《Amazon IAM Identity Center 用户指南》**中的[入门](https://docs.amazonaws.cn/singlesignon/latest/userguide/getting-started.html)。 有关在 IAM Identity Center 中使用 MFA 的更多信息，请参阅《Amazon IAM Identity Center 用户指南》**中的[多重身份验证](https://docs.amazonaws.cn/singlesignon/latest/userguide/enable-mfa.html)。  | 
| 人类用户（例如您的员工用户）使用 IAM 身份提供商（IdP）访问 Amazon 服务的联合访问权限 | IAM 支持与 OpenID Connect (OIDC) 或者 SAML 2.0 (Security Assertion Markup Language 2.0) 兼容的 IdPs。创建 IAM 身份提供者后，必须创建一个或多个可以动态分配给联合主体的 IAM 角色。 | 有关 IAM 身份提供程序和联合身份验证的更多信息，请参阅 [身份提供程序和 Amazon 中的联合身份验证](id_roles_providers.md)。 | 
|  Amazon Web Services 账户 间的跨账户访问权限  |  您想要与其他 Amazon Web Services 账户 中的用户共享对特定 Amazon 资源的访问权限。 角色是授予跨账户访问权限的主要方式。但是，某些 Amazon 服务支持基于资源的策略，允许您将策略直接附加到资源（而不是使用角色作为代理）。  | 有关 IAM 角色的更多信息，请参阅 [IAM 角色](id_roles.md)。 有关服务关联角色的更多信息，请参阅[创建服务相关角色](id_roles_create-service-linked-role.md)。 有关哪些服务支持使用服务相关角色的信息，请参阅 [使用 IAM 的 Amazon 服务](reference_aws-services-that-work-with-iam.md)。查找在**服务相关角色**列中具有**是**值的服务。要查看该服务的服务相关角色文档，请选择该列中与**是**有关的链接。  | 
|  您的 Amazon Web Services 账户 中指定 IAM 用户的长期凭证  |  您可能有一些特定的使用案例需要带有 Amazon 中 IAM 用户的长期凭证。您可以使用 IAM 在您的 Amazon Web Services 账户 中创建这些 IAM 用户，并使用 IAM 管理他们的权限。部分使用场景包括： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/IAM/latest/UserGuide/introduction_identity-management.html) 根据 [最佳实践](best-practices.md)，对于需要具有 [编程访问权限和长期凭证](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_access-keys.html) 的 IAM 用户的场景，我们建议在需要时更新访问密钥。有关更多信息，请参阅 [更新访问密钥](id-credentials-access-keys-update.md)。  | 有关设置 IAM 用户的信息，请参阅 [在 Amazon Web Services 账户 中创建 IAM 用户](id_users_create.md)。 有关 IAM 用户访问密钥的更多信息，请参阅 [管理 IAM 用户的访问密钥。](id_credentials_access-keys.md)。 有关 Amazon CodeCommit 或 Amazon Keyspaces 的服务特定凭证的更多信息，请参阅 [CodeCommit 的 IAM 凭证：Git 凭证、SSH 密钥和 Amazon 访问密钥](id_credentials_ssh-keys.md) 和 [将 IAM 与 Amazon Keyspaces（Apache Cassandra 兼容）结合使用](id_credentials_keyspaces.md)。  | 

## 支持编程用户访问
<a name="gs-get-keys"></a>

如果用户需要在 Amazon Web Services 管理控制台之外与 Amazon 交互，则需要编程式访问权限。授予编程式访问权限的方法取决于访问 Amazon 的用户类型：
+ 如果您在 IAM Identity Center 中管理身份，则 Amazon API 需要一个配置文件，而 Amazon Command Line Interface 需要一个配置文件或环境变量。
+ 如果您有 IAM 用户，则 Amazon API 和 Amazon Command Line Interface 需要访问密钥。可能的话，创建临时凭证，该凭证由一个访问密钥 ID、一个秘密访问密钥和一个指示凭证何时到期的安全令牌组成。

要向用户授予编程式访问权限，请选择以下选项之一。


| 哪个用户需要编程式访问权限？ | Option | 更多信息 | 
| --- | --- | --- | 
|   员工身份  （在 IAM Identity Center 中管理的人员和用户）  | 使用短期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求（直接或使用 Amazon SDK）。 |  对于 Amazon CLI，请按照《Amazon IAM Identity Center 用户指南》**中[获取用于 CLI 访问的 IAM 角色凭证](https://docs.amazonaws.cn//singlesignon/latest/userguide/howtogetcredentials.html)中的说明进行操作。 对于 Amazon API，请按照《Amazon SDK 和工具参考指南》**中 [SSO 凭证](https://docs.amazonaws.cn//sdkref/latest/guide/feature-sso-credentials.html)中的说明进行操作。  | 
| IAM 用户 | 使用短期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求（直接或使用 Amazon SDK）。 | 按照[将临时凭证用于 Amazon 资源](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM 用户 | 使用长期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求（直接或使用 Amazon SDK）。（不推荐使用） | 按照[管理 IAM 用户的访问密钥](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_credentials_access-keys.html)中的说明进行操作。 | 
| 联合身份验证主体 | 使用 Amazon STS API 操作创建具有临时安全凭证（包括访问密钥对和会话令牌）的新会话。 | 有关 API 操作的说明，请参阅 [请求临时安全凭证](id_credentials_temp_request.md) | 