

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将临时安全凭证用于 Amazon SNS
<a name="sns-using-temporary-credentials"></a>

AWS Identity and Access Management (IAM) 允许您向需要访问您的 AWS 资源的用户和应用程序授予临时安全证书。这些临时安全凭证主要用于 IAM 角色和通过 SAML 和 OpenID Connect（OIDC）等行业标准协议进行联合访问。

要有效地管理对 AWS 资源的访问权限，必须了解以下关键概念：
+ **IAM 角色** — 角色用于委派对 AWS 资源的访问权限。角色可以由 Amazon EC2 实例、Lambda 函数等实体或其他 AWS 账户的用户担任。
+ **联合用户**-这些用户是通过外部身份提供商 (IdPs) 使用 SAML 或 OIDC 进行身份验证的用户。建议人类用户使用联合访问权限，而软件应用程序应使用 IAM 角色。
+ 无@@ **处不在的角色** — 对于需要 AWS 访问权限的外部应用程序，您可以使用 IAM Roles Anywhere 来安全地管理访问权限，而无需创建长期证书。

您可以使用临时安全凭证对 Amazon SNS 发出请求。 SDKs 和 API 库使用这些凭据计算必要的签名来对您的请求进行身份验证。凭证过期的请求将被 Amazon SNS 拒绝。

有关临时安全凭证的更多信息，请参阅《IAM 用户指南》**中的[使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)和[向经过外部身份验证的用户提供访问权限（身份联合验证）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。

**Example HTTPS 请求示例**  
以下示例演示如何使用从 AWS Security Token Service (STS) 获得的临时安全证书对 Amazon SNS 请求进行身份验证。  

```
https://sns.us-east-2.amazonaws.com/
?Action=CreateTopic
&Name=My-Topic
&SignatureVersion=4
&SignatureMethod=AWS4-HMAC-SHA256
&Timestamp=2023-07-05T12:00:00Z
&X-Amz-Security-Token=SecurityTokenValue
&X-Amz-Date=20230705T120000Z
&X-Amz-Credential={{<your-access-key-id>}}/20230705/us-east-2/sns/aws4_request
&X-Amz-SignedHeaders=host
&X-Amz-Signature={{<signature-value>}}
```

**对请求进行身份验证的步骤**

1. **获取临时安全凭证** - 使用 AWS STS 担任角色或获取联合用户凭证。这将为您提供访问密钥 ID、秘密访问密钥和安全令牌。

1. **构造请求** — 包括您的 Amazon SNS 操作所需的参数（例如 CreateTopic），并确保使用 HTTPS 进行安全通信。

1. **签署请求** - 使用 AWS 签名版本 4 流程签署您的请求。这包括创建规范请求 string-to-sign，然后计算签名。有关 AWS 签名版本 4 的更多信息，请参阅 *Amazon EBS 用户指南*中的[使用签名版本 4 签](https://docs.aws.amazon.com/ebs/latest/userguide/ebsapis-using-sigv4.html)名。

1. **发送请求** - 在请求标头中包含 X-Amz-Security-Token，以便将临时安全凭证传递给 Amazon SNS。