云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

_英语六级视频百度云_价格

小七 141 0

使用HashiCorp Vault AppRole验证应用程序

HashiCorp Vault是一个用于管理机密的开源工具。使用Vault的应用程序标识管理使应用程序和计算机能够自动创建、更改和旋转通信、服务、脚本等所需的机密。此外,Vault还允许管理员通过提供对不同机密的访问控制来管理应用程序和计算机。在上一篇文章中,我们研究了为什么我们需要动态秘密。这篇文章探讨了机器和应用程序如何使用AppRole auth方法来验证保险库和访问机密。»身份验证方法Vault中的身份验证方法是执行身份验证并将策略分配给用户、应用程序或计算机的组件。Vault有许多身份验证方法来支持不同的用例和身份来源。使用activedirectory管理用户的组织可以使用LDAP auth方法,有些组织可能使用Github auth方法来管理用户,而运行在AWS中的vm可以使用AWS auth方法。虽然LDAP和Github等身份验证方法允许用户登录到Vault,但是需要一个类似的工作流来允许应用程序进行同样的操作。AppRole auth方法是专门为计算机或应用程序登录到保险库而设计的。让我们详细看看AppRole auth方法是如何工作的。»接近AppRole auth方法允许定义多个对应于不同应用程序的"角色",每个应用程序具有不同的访问级别。要使用Vault进行身份验证,将为应用程序分配一个静态角色ID和一个动态生成的机密ID,这两个ID都是登录和获取Vault令牌所必需的。AppRole auth方法是专门为机器和应用程序设计的,但是使用了人类可能使用的类似身份验证方法。您可以将角色ID视为"username",将Secret ID视为"password",允许计算机对Vault进行身份验证。一旦经过身份验证,它们将被分配一组策略,这些策略授予从保险库检索机密的权限。»角色ID如前所述,角色ID可以被视为特定应用程序的"用户名"。这意味着同一应用程序的多个实例可以共享同一个角色ID。例如,一个前端服务可以有多个实例正在运行,并且它们都共享同一个角色ID,因为它们是一个逻辑服务。角色标识可以由操作员或构建系统创建,并使用各种方法(如配置管理)提供给应用程序。然后,可以将其与机密ID一起使用,以登录到Vault。»机密IDSecret ID始终是一个秘密,可以看作是登录到Vault所需的"密码"。这可以由可信实体(如构建系统)或使用配置管理动态生成。对于应用程序的一个实例,每个机密ID都是唯一的。唯一的凭据允许我们更好地审核访问,并具有细粒度的访问撤销。每个秘密ID都可以有一个使用限制、TTL和过期时间,以便更好地限制访问。现在让我们看一个端到端的示例,以帮助更好地理解AppRole auth方法。上面的示例探讨了为运行在服务器上或使用容器的应用程序生成保险库令牌的端到端过程。在本例中,操作员创建一个策略,允许应用程序从保险库获取其机密。下面是为名为"hello world"的前端服务创建的策略示例。$cat你好-世界.hcl路径"秘密/你好世界"{能力=读取,"列表"]}$vault policy编写hello world hello-世界.hcl接下来,操作员可以在Vault中创建角色,并将策略与该角色关联。$vault write auth/approle/role/hello world secret_id_ttl=120m token_max_tll=120m policies="hello world"helloworld角色现在可以供helloworld应用程序的任何实例使用。helloworld角色的角色ID可以由人类或机器使用vaultapi获取。下面是如何使用Vault CLI获取角色ID的示例。$vault read auth/approle/role/hello world/角色id键值--- -----角色编号83b621b3-0aca-1e63-fc05-b7a44318dd85在本例中,开发人员通过将应用程序的新版本推送到源代码存储库来触发helloworld应用程序的构建。CI/CD构建系统现在可以使用vaultapi获取helloworld角色的角色ID。此角色标识可以作为应用程序元数据的一部分写入。在本例中,角色ID被写入负责运行helloworld应用程序的服务器的机器映像中。这可以在使用Packer创建机器图像期间完成。CI/CD系统可以将角色ID作为参数传递给Packer,并且可以使用各种供应器将其写入机器映像。一旦机器映像的构建完成,这个机器映像就可以用来启动helloworld应用程序的新实例。机器映像将包含所有应用程序依赖项、应用程序代码以及角色ID写入的文件。接下来,可以将机器映像发送到用于启动应用程序实例的编排器。这可以是配置管理系统。在本例中,Terraform将用于为helloworld应用程序启动服务器。协调器将为应用程序生成一个秘密ID,并使用SSH等方法将其传递到运行应用程序的服务器。下面是使用Vault CLI为hello world角色生成机密ID的示例。$vault write-f auth/approle/role/hello world/secret id键值--- -----密码238651ce-7962-c9bf-67a4-1ec0573d1058密码存取器d5fd9984-d901-cf65-473e-edbb43618d95请注意,orchestrator(Terraform)只能为hello world应用程序生成机密ID,并且无权访问该应用程序的机密。这对于在应用程序交付管道中划分访问是至关重要的。hello world应用程序可以使用在生成过程中写入的文件提供的角色ID和Secret ID对Vault进行身份验证。下面是使用角色ID和机密ID使用Vault CLI登录到Vault的示例。$vault write auth/approle/login role_id=${role_id}机密\ id=${secret_id}键值--- -----代币87e9d662-2f9d-5cc5-a7eb-b3e5ed76d887令牌访问器3e9a58e5-4ea5-fe1c-d3fc-180017b63e98令牌持续时间1htoken_renewable真令牌策略[默认hello world]token_meta_role_name你好世界-field=token命令行参数可用于筛选输出以仅返回Vault令牌。这在设置VAULT_TOKEN环境变量时非常有用。一旦身份验证成功,Vault将向应用程序提供令牌,该令牌可用于请求机密。envconsur和conver template等工具也可用于填充应用程序的机密数据。下面是一个使用conver模板获取机密数据的示例。{{带秘密"秘密/你好世界"}}{{如果。数据.密码}}密码={。数据.密码}}"{{end}}{{end}}从保险库获取的机密可以通过conver模板写入配置文件。然后应用程序可以由consur模板启动,它可以读取配置文件来使用机密。»结论AppRole auth方法为应用程序或计算机提供了一个工作流,以通过Vault进行身份验证。它可以通过使用角色ID(敏感)和Secret ID(Secret)的组合来帮助提供多部分身份验证解决方案。AppRole允许为应用程序分配一个唯一的角色,并在适合现有配置管理或CI/CD工作流的同时安全地通过Vault进行身份验证。了解更多结帐方法。