【数据安全】采用HashiCorp Vault :第二天

Chinese, Simplified

第二天



命名空间



Vault Enterprise允许组织对Vault安装进行逻辑分段。

传统上,在Vault作为中心功能运行的组织中,需要维护大量策略的某些团队将获得自己的命名空间。这也可以是分段的,例如,与一组Kubernetes命名空间对齐。

在顶部名称空间处获得的标记可以被分段以遍历多个名称空间。

对于某些运行Vault的专用团队的组织而言,名称空间可能不会增加显着优势,并可能增加复杂性。

命名空间通常以自动方式配置,与团队或项目入职一致,例如在配置新的Kubernetes命名空间或AWS账户时。

安全介绍



在能够使用机密之前,用户或应用程序必须登录Vault,并获得一个短期令牌。用于应用程序的方法通常基于运行应用程序的平台(AWS,GCE,Azure,Kubernetes,OIDC)或用于部署它的工作流程(带有CI工具的AppRole,如Jenkins或Circle CI) 。

令牌必须维护在客户端,并且在到期时可以简单地续订。对于短期工作流,传统的令牌将被创建,其生命周期与平均部署时间相匹配,并且可以使其过期,从而确保每个部署的新令牌。

认证方法通常由操作员在初始配置时配置。

最常见的是,系统会自动执行身份验证过程,但是当多个团队负责配置系统或部署应用程序时,执行流程的责任通常被认为是切换的一部分。

基于现有属性(如LDAP组,OIDC声明,IAM角色,Google Project ID等),角色在不同的身份验证后端中创建,后端映射到策略(最终授予对机密的访问权限)。

每种身份验证方法都会详细记录安全介绍过程,并提供了许多可用的分析文档。

 

存储和检索秘密



Vault将存储或动态生成可以以编程方式或以交互方式访问的机密。

最常见的采用模式,首先是在Vault中存储传统上分散在文件中的秘密,桌面密码管理工具,版本控制系统和配置管理,并利用下面描述的一些消费模式作为获取秘密的手段。消费它的应用程序。

向前移动大多数组织开始采用秘密引擎作为减少开销的方法,例如使用PKI作为中间CA并自动生成短期证书,或短期数据库凭证。

API

如前所述,Vault提供了一个HTTP Restful API,允许应用程序以编程方式使用机密。有大量的客户端库和语言内抽象,可以实现更简单的编程。

传统上,这是从Vault检索机密的最安全模式,因为它们通常作为变量存储在内存中,并在应用程序不使用它们时进行清理。

此模式具有很强的侵入性,因为它需要修改应用程序以从Vault检索机密(通常在初始化时或使用外部服务)。

非侵入性模式

HashiCorp提供了两个应用程序,通过配置文件或环境变量,使用最常见的秘密消费模式,提供工作流来使用凭证而无需修改应用程序。

这些应用程序要么渲染配置文件模板内插机密,要么使用从Vault获取的值传递环境变量。

响应包装

在第三方软件通常提供凭证的情况下,该系统可以请求包装的响应,其中秘密最终在消耗该秘密的系统中展开,而不需要向配置该应用的自动化系统公开凭证。

加密即服务



Vault提供加密服务,消费者可以通过API调用简单地加密/解密信息,密钥生命周期和管理通常由外部团队管理(通常由自动化协助)。

生成的每个密钥都有单独的API路径用于管理,以及每个服务操作(加密/解密/签名/验证),允许在非常精细的级别设置策略,与组织中现有的角色保持一致。例如,虽然安全部门可能对特定的传输装载具有以下权限:

## Crypto officers
# Create key material, non deletable, non exportable in unencrypted fashion, only aes-256 or rsa-4096
path "/transit/keys/*" {
  capabilities = ["create", "update"]
    allowed_parameters = {
      "allow_plaintext_backup" = ["false"]
      "type" = ["aes256-gcm96", "rsa-4096"]
      "convergent_encryption" = []
      "derived" = []
    }
}

# List keys
path "/transit/keys" {
  capabilities = ["list"]
}

# Rotate Key
path "/transit/keys/*/rotate" {
  capabilities = ["create"]
}

而消费者只能访问该服务:

## Consumers
# Encrypt information
path "/transit/encrypt/keyname" {
  capabilities = ["create"]
}

# Decrypt information
path "/transit/decrypt/keyname" {
  capabilities = ["create"]
}

# Rewrap information
path "/transit/rewrap/keyname" {
  capabilities = ["create"]
}

原文:https://www.hashicorp.com/resources/adopting-hashicorp-vault#day-two

本文:https://pub.intelligentx.net/adopting-hashicorp-vault-day-two

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
Adopting HashiCorp Vault :day two