【数据安全】采用HashiCorp Vault :第二天
第二天
命名空间
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
讨论:请加入知识星球或者小红圈【首席架构师圈】
- 121 次浏览