

# 排查 IAM 问题
<a name="troubleshoot"></a>

使用此处的信息可帮助您诊断和修复在使用 Amazon Identity and Access Management（IAM）时出现的常见问题。

**Topics**
+ [我无法登录我的 Amazon 账户](#troubleshoot_general_cant-sign-in)
+ [我丢失了访问密钥](#troubleshoot_general_access-keys)
+ [策略变量不起作用](#troubleshoot_general_policy-variables-dont-work)
+ [我所做的更改可能不会立即可见](#troubleshoot_general_eventual-consistency)
+ [我没有权限执行：iam:DeleteVirtualMFADevice](#troubleshoot_general_access-denied-delete-mfa)
+ [如何安全地创建 IAM 用户？](#troubleshoot_general_securely-create-iam-users)
+ [其他资源](#troubleshoot_general_resources)
+ [排查访问被拒绝错误消息](troubleshoot_access-denied.md)
+ [排查根用户问题](troubleshooting_root-user.md)
+ [排查 IAM 策略问题](troubleshoot_policies.md)
+ [排查通行密钥和 FIDO 安全密钥问题](troubleshoot_mfa-fido.md)
+ [排查 IAM 角色问题](troubleshoot_roles.md)
+ [排查 IAM 和 Amazon EC2 问题](troubleshoot_iam-ec2.md)
+ [排查 IAM 和 Amazon S3 问题](troubleshoot_iam-s3.md)
+ [排查 SAML 与 IAM 联合身份验证的问题](troubleshoot_saml.md)

## 我无法登录我的 Amazon 账户
<a name="troubleshoot_general_cant-sign-in"></a>

确认您具有正确的凭证，并且使用正确的方法进行登录。有关更多信息，请参阅《Amazon 登录 用户指南》**中的[登录问题排查](https://docs.amazonaws.cn/signin/latest/userguide/troubleshooting-sign-in-issues.html)。

## 我丢失了访问密钥
<a name="troubleshoot_general_access-keys"></a>

访问密钥由两个部分组成：
+ **访问密钥标识符**。标识符是公开的，您可以在列出访问密钥的任意 IAM 控制台中进行查看，例如用户摘要页面。
+ **秘密访问密钥**。该密钥会在您最初创建访问密钥对时提供。它与密码一样，***之后无法检索***。如果您丢失了私有访问密钥，则必须创建新的访问密钥对。如果您已达到[访问密钥的数量上限](reference_iam-quotas.md#reference_iam-quotas-entities)，必须删除一个现有的密钥对，然后才可以创建另一个。

如果您丢失了秘密访问密钥，则必须删除访问密钥并创建新的访问密钥。有关更多说明，请参阅 [更新访问密钥](id-credentials-access-keys-update.md)。

## 策略变量不起作用
<a name="troubleshoot_general_policy-variables-dont-work"></a>

如果您的策略变量不起作用，则已发生下列错误之一：

**版本策略元素中的日期错误。**  
验证包含变量的所有策略（包括以下策略版本编号）：`"Version": "2012-10-17"`。如果没有正确的版本编号，则在评估过程中不会更换变量。只会从字面上评估这些变量。当您包含最新的版本号时，不包含变量的任何策略仍然有效。  
`Version` 策略元素与策略版本不同。`Version` 策略元素用在策略之中，用于定义策略语言的版本。当您修改 IAM 中的客户管理型策略时，将创建一个策略版本。已更改的策略不会覆盖现有策略。而是由 IAM 创建新的托管策略版本。要了解 `Version` 策略元素的更多信息，请参阅[IAM JSON 策略元素：Version](reference_policies_elements_version.md)。要了解策略版本的更多信息，请参阅[IAM policy 版本控制](access_policies_managed-versioning.md)。

**变量字符的字母大小写错误。**  
验证您的策略变量为正确的大小写。有关更多信息，请参阅 [IAM policy 元素：变量和标签](reference_policies_variables.md)。

## 我所做的更改可能不会立即可见
<a name="troubleshoot_general_eventual-consistency"></a>

作为全球数据中心的计算机要访问的服务，IAM 使用称为[最终一致性](https://wikipedia.org/wiki/Eventual_consistency)的分布式计算模型。您在 IAM（或其他 Amazon 服务）中所做的任何更改，包括[基于属性的访问权限控制（ABAC）](https://docs.amazonaws.cn/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)标签，都需要一段时间才能在所有可能的端点中可见。它在服务器与服务器之间、复制区域与复制区域之间，以及区域与区域之间发送数据需要时间，这会造成一些延迟。IAM 也使用缓存来提高性能，但在某些情况下，这可能会增加时间。在之前缓存的数据超时之前，更改可能不可见。

您在设计全球应用程序时，必须考虑到这些可能的延迟。确保应用程序可以按预期工作，即使在一个位置进行的更改不能立即在其他位置可见。此类更改包括创建或更新用户、组、角色或策略。在应用程序的关键、高可用性代码路径中，我们不建议包含此类 IAM 更改。而应在不常运行的、单独的初始化或设置例程中进行 IAM 更改。另外，在生产工作流程依赖这些更改之前，请务必验证更改已传播。

有关其他某些 Amazon 服务如何受此影响的更多信息，请参阅以下资源：
+ **Amazon DynamoDB**：《DynamoDB 开发人员指南》**中的[读取一致性](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html)，以及《Amazon DynamoDB 开发人员指南》中的[读取一致性](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html)。
+ **Amazon EC2**：*Amazon EC2 API 参考*中的 [EC2 最终一致性](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/query-api-troubleshooting.html#eventual-consistency)。
+ **Amazon EMR**：Amazon 大数据博客中的 [Ensuring Consistency When Using Amazon S3 and Amazon EMR for ETL Workflows](https://www.amazonaws.cn/blogs/big-data/ensuring-consistency-when-using-amazon-s3-and-amazon-elastic-mapreduce-for-etl-workflows/)
+ **Amazon Redshift**：*Amazon Redshift 数据库开发人员指南*中的[管理数据一致性](https://docs.amazonaws.cn/redshift/latest/dg/managing-data-consistency.html)
+ **Amazon S3**：*Amazon Simple Storage Service 用户指南*中的 [Amazon S3 数据一致性模型](https://docs.amazonaws.cn//AmazonS3/latest/userguide/Welcome.html#ConsistencyModel)

## 我没有权限执行：iam:DeleteVirtualMFADevice
<a name="troubleshoot_general_access-denied-delete-mfa"></a>

当您尝试为自己或其他用户分配或删除虚拟 MFA 设备时，可能会收到以下错误：

```
User: arn:aws:iam::123456789012:user/Diego is not authorized to perform: iam:DeleteVirtualMFADevice on resource: arn:aws:iam::123456789012:mfa/Diego with an explicit deny
```

如果某个人以前在 IAM 控制台中开始将虚拟 MFA 设备分配给用户后取消该过程，则可能会发生这种情况。这会在 IAM 中为用户创建一个虚拟 MFA 设备，但绝不将其分配给用户。删除现有的虚拟 MFA 设备，然后使用相同设备名称创建新的虚拟 MFA 设备。

要修复此问题，管理员**不应**编辑策略权限。相反，管理员必须使用 Amazon CLI 或 Amazon API 来删除现有但未分配的虚拟 MFA 设备。

**删除现有但未分配的虚拟 MFA 设备**

1. 查看您账户中的虚拟 MFA 设备。
   + Amazon CLI: [https://docs.amazonaws.cn/cli/latest/reference/iam/list-virtual-mfa-devices.html](https://docs.amazonaws.cn/cli/latest/reference/iam/list-virtual-mfa-devices.html)
   + Amazon API：[https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListVirtualMFADevices.html](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListVirtualMFADevices.html)

1. 在响应中，找到您要修复的用户的虚拟 MFA 设备 ARN。

1. 删除虚拟 MFA 设备。
   + Amazon CLI: [https://docs.amazonaws.cn/cli/latest/reference/iam/delete-virtual-mfa-device.html](https://docs.amazonaws.cn/cli/latest/reference/iam/delete-virtual-mfa-device.html)
   + Amazon API：[https://docs.amazonaws.cn/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html](https://docs.amazonaws.cn/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html)

## 如何安全地创建 IAM 用户？
<a name="troubleshoot_general_securely-create-iam-users"></a>

如果您的员工需要访问 Amazon，则可以选择创建 IAM 用户或[使用 IAM Identity Center 进行身份验证](https://docs.amazonaws.cn/singlesignon/latest/userguide/what-is.html)。如果使用 IAM，Amazon 建议您创建 IAM 用户并将凭证安全地传达给员工。如果您不在员工身旁，请使用安全的工作流程向员工传达凭证。

使用以下安全工作流程在 IAM 中创建新用户：

1. 使用 Amazon Web Services 管理控制台 [创建新用户](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_users_create.html)。选择使用生成的密码授予 Amazon Web Services 管理控制台 访问权限。如有必要，请选中 **Users must create a new password at next sign-in**（用户必须在下次登录时创建新密码）复选框。在用户更改密码之前，不要向用户添加权限策略。

1. 添加用户后，复制新用户的登录 URL、用户名和密码。要查看密码，请选择 **Show**（显示）。

1. 使用贵公司中的安全通信方法（如电子邮件、聊天或支持工单系统）将密码发送给员工。单独为您的用户提供 IAM 用户控制台链接及其用户名。在授予员工权限之前，告诉员工确认他们可以成功登录。

1. 员工确认后，添加他们所需的权限。作为安全最佳实践，添加一个策略，要求用户使用 MFA 进行身份验证以管理其凭证。有关策略示例，请参阅 [Amazon：允许使用 MFA 完成身份验证的 IAM 用户在“安全凭证”页面上管理自己的凭证。](reference_policies_examples_aws_my-sec-creds-self-manage.md)。

## 其他资源
<a name="troubleshoot_general_resources"></a>

下列相关资源有助于您在使用 Amazon 期间排查问题。
+ **[Amazon CloudTrail 用户指南](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/)** - 使用 Amazon CloudTrail 可跟踪对 Amazon 进行的 API 调用的历史记录并将这些信息存储在日志文件中。这有助于确定访问了您账户中的资源的用户和账户、进行调用的时间、请求的操作等。有关更多信息，请参阅 [使用 Amazon CloudTrail 记录 IAM 和 Amazon STS API 调用](cloudtrail-integration.md)。
+ **[Amazon 知识中心](https://www.amazonaws.cn/premiumsupport/knowledge-center/)** – 查找常见问题解答和其他资源的链接，帮助您排查问题。
+ **[Amazon 支持中心](https://console.amazonaws.cn/support/home#/)** – 获取技术支持。
+ **[Amazon Premium Support 中心](https://www.amazonaws.cn/premiumsupport/)** – 获取高级技术支持。