

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

# 密钥管理器
<a name="secret-manager-component"></a>

密钥管理器组件 (`aws.greengrass.SecretManager`) 将密钥从 AWS Secrets Manager 部署到 Greengrass 核心设备。使用此组件在 Greengrass 核心设备的自定义组件中安全地使用凭证（如密码）。有关 Secrets Manager 的更多信息，请参阅 *AWS Secrets Manager 用户指南*中的[什么是 AWS Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。

要在您的自定义 Greengrass 组件中访问此组件的秘密，请使用中的操作。[GetSecretValue](ipc-secret-manager.md#ipc-operation-getsecretvalue) AWS IoT Device SDK有关更多信息，请参阅[使用 AWS IoT Device SDK 与 Greengrass 原子核、其他组件进行通信，以及 AWS IoT Core与 Greengrass 核、其他组件进行通信，以及 AWS IoT Core](interprocess-communication.md)和[检索密钥值](ipc-secret-manager.md)。

此组件对核心设备上的密钥进行加密，在您使用凭证和密码前确保其安全。它使用核心设备的私钥来加密和解密密钥。

**Topics**
+ [版本](#secret-manager-component-versions)
+ [Type](#secret-manager-component-type)
+ [操作系统](#secret-manager-component-os-support)
+ [要求](#secret-manager-component-requirements)
+ [依赖项](#secret-manager-component-dependencies)
+ [配置](#secret-manager-component-configuration)
+ [本地日志文件](#secret-manager-component-log-file)
+ [更改日志](#secret-manager-component-changelog)

## 版本
<a name="secret-manager-component-versions"></a>

此组件具有以下版本：
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="secret-manager-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="secret-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="secret-manager-component-requirements"></a>

此组件具有以下要求：
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `secretsmanager:GetSecretValue` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "secretsmanager:GetSecretValue"
        ],
        "Effect": "Allow",
        "Resource": [
        "arn:aws:secretsmanager:us-east-1:123456789012:secret:MySecret"
        ]
      }
    ]
  }
  ```

------

  ```
  ```
**注意**  
如果您使用客户管理的密 AWS Key Management Service 钥来加密机密，则设备角色也必须允许该`kms:Decrypt`操作。

  有关密钥管理器 IAM 策略的更多信息，请参阅《AWS Secrets Manager 用户指南》**中的以下主题：
  + [的身份验证和访问控制 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)
  + [可以在 IAM 策略或 AWS Secrets Manager密钥策略中使用的操作、资源和上下文键](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html)
+ 自定义组件必须定义一个授权策略，该策略允许 `aws.greengrass#GetSecretValue` 获取此组件存储的密钥。在此授权策略中，您可以限制组件对特定密钥的访问权限。有关更多信息，请参阅[密钥管理器 IPC 授权](ipc-secret-manager.md#ipc-secret-manager-authorization)。
+ （可选）如果您将核心设备的私钥和证书存储在[硬件安全模块](hardware-security.md)（HSM）中，则 HSM 必须支持 RSA 密钥，私钥必须具有 `unwrap` 权限，公钥则必须具有 `wrap` 权限。

### 端点和端口
<a name="secret-manager-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口： | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `secretsmanager.region.amazonaws.com`  | 443 | 是 |  将密钥下载至核心设备。  | 

## 依赖项
<a name="secret-manager-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#secret-manager-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.2.7 ]

下表列出了此组件版本 2.2.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.17.0 | 软性 | 

------
#### [ 2.2.6 ]

下表列出了此组件版本 2.2.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.16.0 | 软性 | 

------
#### [ 2.2.2 – 2.2.5 ]

下表列出了此组件版本 2.2.2 到 2.2.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.15.0 | 软性 | 

------
#### [ 2.2.0 ]

下表列出了此组件版本 2.2.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.13.0 <2.14.0 | 软性 | 

------
#### [ 2.1.7 – 2.1.8 ]

下表列出了此组件版本 2.1.7 和 2.1.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.13.0 | 软性 | 

------
#### [ 2.1.6 ]

下表列出了此组件的版本 2.1.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.12.0 | 软性 | 

------
#### [ 2.1.5 ]

下表列出了此组件的版本 2.1.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.11.0 | 软性 | 

------
#### [ 2.1.4 ]

下表列出了此组件的版本 2.1.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.10.0 | 软性 | 

------
#### [ 2.1.3 ]

下表列出了此组件的版本 2.1.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.9.0 | 软性 | 

------
#### [ 2.1.2 ]

下表列出了此组件的版本 2.1.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.8.0 | 软性 | 

------
#### [ 2.1.1 ]

下表列出了此组件的版本 2.1.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.7.0 | 软性 | 

------
#### [ 2.1.0 ]

下表列出了此组件版本 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.6.0 | 软性 | 

------
#### [ 2.0.9 ]

下表列出了此组件的版本 2.0.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.5.0  | 软性 | 

------
#### [ 2.0.8 ]

下表列出了此组件的版本 2.0.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.4.0  | 软性 | 

------
#### [ 2.0.7 ]

下表列出了此组件的版本 2.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.3.0  | 软性 | 

------
#### [ 2.0.6 ]

下表列出了此组件的版本 2.0.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.2.0  | 软性 | 

------
#### [ 2.0.4 and 2.0.5 ]

下表列出了此组件版本 2.0.4 和 2.0.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.3 <2.1.0  | 软性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="secret-manager-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`periodicRefreshIntervalMin`（可选）  
此组件将核心设备上配置的密钥与来自 AWS Secrets Manager 服务的最新密钥值同步的时间间隔（以分钟为单位）。如果未配置此时间间隔，密钥管理器将不会定期刷新配置的密钥。  

```
{
  "cloudSecrets": [
    {
      "arn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef"
    }
  ],
  "periodicRefreshIntervalMin" : 60
}
```

`cloudSecrets`  
要部署到核心设备的密钥管理器密钥列表。您可以指定标签来定义要部署的每个密钥的版本。如果未指定版本，则此组件将部署使用附加了暂存标签 `AWSCURRENT` 的版本。有关更多信息，请参阅《AWS Secrets Manager 用户指南》**中的[暂存标签](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_staging-label)。  
密钥管理器组件在本地缓存密钥。如果密钥管理器中的密钥值发生变化，此组件不会自动检索新值。要更新本地副本，请为密钥指定一个新标签，然后将此组件配置为检索由新标签标识的密钥。  
每个对象包含以下信息：    
`arn`  
要部署的密钥的 ARN。密钥的 ARN 可以是完整的 ARN，也可以是部分 ARN。我们建议您指定完整的 ARN 而不是部分 ARN。有关更多信息，请参阅[从部分 ARN 中查找密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/troubleshoot.html#ARN_secretnamehyphen)。以下是完整的 ARN 和部分 ARN 的示例：  
+ 完整的 ARN：`arn:aws:secretsmanager:us-east-2:111122223333:secret:SecretName-abcdef`
+ 部分 ARN：`arn:aws:secretsmanager:us-east-2:111122223333:secret:SecretName`  
`labels`  
（可选）用于标识要部署到核心设备的密钥版本的标签列表。  
每个标签必须是一个字符串。

**Example 示例：配置合并更新**  

```
{
  "cloudSecrets": [
    {
      "arn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef"
    }
  ]
}
```

## 本地日志文件
<a name="secret-manager-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="secret-manager-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.2.8  |  更新 Greengrass nucleus 版本 2.17.0 版本的组件版本。  | 
|  2.2.7  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.2.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.1.8  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.1.7  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.6  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.5  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.1.3  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.0.9  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.7  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.6  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.0.4  |  初始版本。  | 