

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

# 配置 AWS KMS 的钥匙 AWS 支持 授权
<a name="support-authorization-kms"></a>

## 键要求
<a name="support-authorization-kms-requirements"></a>

支持许可证的加密签名需要客户管理的 AWS KMS 密钥。您的密钥必须满足以下要求：
+ 关键规格：`ECC_NIST_P384`
+ 密钥用法：`SIGN_VERIFY`
+ 密钥必须与支持许可位于同一 AWS 区域。

您的私钥材料永远不会离开 AWS KMS。您可以在密钥上创建授权，允许其调用`DescribeKey``GetPublicKey`、和`Sign`。补助金的范围仅限于支持许可证，当支持许可证被删除或停用时，补助金就会失效。

## 操作方法 AWS 支持 授权使用你的 AWS KMS 键
<a name="support-authorization-kms-how-used"></a>

创建支持许可证时，您的 AWS KMS 密钥将按以下方式使用：

1. 使用[前向访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)`DescribeKey`代表您进行呼叫，验证密钥是否符合要求的规范 (`ECC_NIST_P384`) 和用法 (`SIGN_VERIFY`)。

1. 通过代表您呼叫来创建`CreateGrant`对密钥的授权。该赠款允许`DescribeKey``GetPublicKey`、和`Sign`操作。

1. 当 AWS 支持 请求与现有支持许可相匹配时，使用授权调`Sign`用密钥来验证授权。生成的签名将验证 AWS 支持 是否有权执行操作。

## 必填的关键政策声明
<a name="support-authorization-kms-policy"></a>

将以下政策声明添加到您的 AWS KMS 密钥策略中。这些是 AWS 支持 授权使用您的密钥所需的最低权限。

```
{
  "Sid": "Allows access to CreateGrant through SupportAuthZ",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleRole"},
  "Action": ["kms:CreateGrant"],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": "supportauthz.us-east-1.amazonaws.com",
      "kms:GranteeServicePrincipal": "us-east-1.supportauthz.amazonaws.com",
      "kms:RetiringServicePrincipal": "us-east-1.supportauthz.amazonaws.com"
    },
    "ForAllValues:StringEquals": {
      "kms:GrantOperations": ["DescribeKey", "GetPublicKey", "Sign"]
    },
    "ArnLike": {
      "kms:GrantConstraintSourceArn": "arn:aws:supportauthz:us-east-1:111122223333:supportpermit/*"
    }
  }
},
{
  "Sid": "Allows access to DescribeKey through SupportAuthZ",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleRole"},
  "Action": ["kms:DescribeKey"],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": "supportauthz.us-east-1.amazonaws.com"
    }
  }
}
```

这些语句授予以下权限：

CreateGrant  
允许为`DescribeKey``GetPublicKey`、和`Sign`操作创建授权。这些条件将授权创建限制为通过 AWS 支持 授权服务发出的请求，其范围仅限于支持您账户中的许可资源。 AWS 支持 授权使用[前向访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)进行呼叫`CreateGrant`，这是创建支持许可证的一部分。

DescribeKey  
当您使用转发访问会话创建支持许可证时，允许验证密钥是否符合所需的规格和使用类型。

**注意**  
`111122223333`替换为您的 AWS 账户 ID `us-east-1` 和您创建支持许可证的 AWS 区域。

## 正在撤销 AWS 支持 授权访问
<a name="support-authorization-kms-revoke"></a>

撤销密钥签名权限的推荐方法是撤销授权。这样可以防止进一步的签名操作，而不会影响密钥的其他用途。

要列出和撤销 AWS 支持 授权，请执行以下操作：

1. 在密钥上列出授权以查找授权 ID：

   ```
   aws kms list-grants \
       --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
   ```

   通过拨款的名称或引用您的支持许可证的`GrantConstraints`来源 ARN 来标识该补助金。

1. 撤销授权：

   ```
   aws kms revoke-grant \
       --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
       --grant-id grant-id-from-list-grants
   ```

撤销授权后，将无法再为使用此密钥的任何支持许可证颁发新的签名授权。由于 AWS KMS API 遵循最终一致性模型，因此可能需要一段短暂的延迟才能在整个过程中进行更改 AWS KMS。

**注意**  
撤销授权并不会删除相关的支持许可。支持许可证仍处于活动状态，但无法为其签署授权。每份支援许可证都有特定的补助。使用相同的 AWS KMS 密钥创建新的支持许可证并不能恢复 AWS 支持 授权将该密钥用于原始支持许可证的能力。

## 禁用或删除密钥
<a name="support-authorization-kms-disable-delete"></a>

您也可以禁用或计划删除 AWS KMS 密钥，以防止 AWS 支持 授权签发签名授权。但是，这会影响密钥的所有用途，而不仅仅是 AWS 支持 授权。

**重要**  
两者 AWS KMS 以及 AWS 支持 授权最终都是一致的。禁用或计划删除密钥后，更改最多可能需要几分钟才能完全生效。在此期间，可能会继续使用密钥签发签名的授权。授予撤销最终也是一致的。

如果您禁用了某个密钥，则可以在 AWS KMS 控制台中或通过调`EnableKey`用来重新启用该密钥。如果您删除了密钥，则无法将其恢复。

## 监控密钥使用情况
<a name="support-authorization-kms-monitoring"></a>

当您的 AWS KMS 密钥用于签署授权时，会在密钥的事件历史 AWS CloudTrail 记录中记录签名操作。您可以使用这些事件来审计代表您签署授权的时间和频率。