

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 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。

**注意**  
撤銷授予不會刪除相關聯的支援許可。支援許可會保持在 ACTIVE 狀態，但無法為其簽署授權。授予是每個支援許可特有的。使用相同 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 會在金鑰的事件歷史記錄中記錄簽署操作。您可以使用這些事件來稽核代表您簽署授權的時間和頻率。