教程:Cloud中的加密密钥(使用 Golang 和 CLI)

教程:Cloud中的加密密钥(使用 Golang 和 CLI)

教程:Cloud中的加密密钥(使用 Golang 和 CLI)_第1张图片

教程:Cloud中的加密密钥(使用 Golang 和 CLI)_第2张图片

随着我们越来越多地转向公共云,加密密钥的使用也变得越来越重要。这包括加密数据和数字签名。它的优势包括:

  • 云中加密。这允许我们在云中加密数据,而不是在客户端机器上处理数据。
  • 访问策略。使用基于云的系统,可以针对加密密钥的使用定义严格的访问策略。
  • 审计。通过AWS CloudTrail,可以记录对加密密钥的访问,这可以支持监管和对合规性的需求。
  • BYOK。这允许用户创建自己的密钥,然后将它们上传到云端。

在AWS中,我们有KMS(密钥管理服务),它生成并存储加密密钥。这些密钥永远不会离开 Amazon 的 HSM(硬件安全模块),并且已根据 FIPS 140–2 进行了验证。导出时,它们仅以加密形式被提供。总的来说,存储一个密钥的费用是每月1美元(但为AWS服务生成的密钥是免费存储的)。密钥的使用不受访问阈值的限制。此外,密钥只能在设置它们的地理区域中使用。

教程:Cloud中的加密密钥(使用 Golang 和 CLI)_第3张图片

对称或非对称密钥

加密密钥保留在AWS内的一个受信任的硬件环境中,锁定到了特定区域,并应用与AWS IAM(身份和访问管理)标识符相关的严格访问策略。这些与最小特权权限相关——除非在访问策略中定义了权限,否则不会授予权限。

最初,我们可以创建对称密钥(用于加密/解密或生成HMAC)或非对称密钥(用于加密或数字签名)。使用HMAC,我们创建一个对称密钥,该密钥可以用于对消息进行签名,然后使用相同的密钥验证签名。数字签名的话,我们使用一个私人(秘密)密钥对消息进行签名,然后由一个公共密钥进行验证。

在AWS控件中,我们可以使用以下命令创建对称密钥:

教程:Cloud中的加密密钥(使用 Golang 和 CLI)_第4张图片

生成的密钥有一个key ID,我们定义了它的用途(比如加密和解密):

img

然后,用户定义密钥别名和ARN (Amazon Resource Names)。接下来,我们可以为密钥的使用定义一个策略:

{
    "Id": "key-consolepolicy-3",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "

你可能感兴趣的:(golang,安全,运维)