前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Conjur关键概念 | 机器身份(Machine Identity)

Conjur关键概念 | 机器身份(Machine Identity)

作者头像
网络安全观
发布2021-02-26 10:31:59
1.4K0
发布2021-02-26 10:31:59
举报
文章被收录于专栏:网络安全观

在Conjur中,机器是秘密的非人类消费者,如服务器、虚拟机、容器、应用程序、微服务、Kubernetes服务帐户、Ansible节点和其他自动化进程。识别和授权机器很重要,因为我们在自动化工作流中将权限委托给它们

Conjur为机器提供可靠和安全的识别。这个身份是Conjur认证服务的一部分,为机器证明自己可以访问Conjur提供了一种方法。一旦你有了这些,DevOps团队就可以使用策略来控制机器可以访问哪些秘密。策略还管理哪些其他用户(机器和人员)可以访问机器,例如,管理操作、SSH访问或流量授权。

身份是什么?

它是一个唯一的标识符、一个密钥(secretkey),和配置信息。身份作为存储在文件或环境变量中的信息集合存在。Conjur服务器还维护在身份验证期间使用的每个主机的身份信息。

建立机器身份的一些方法是:Conjur策略中的声明、使用API调用、或集成加工(toolingin our integrations)。

主机(Hosts)

Conjur使用一个名为主机的资源来表示机器身份主机资源类似于用户资源(代表人类用户),其中:

  • 它有自己的登录名(ID)和密钥(API密钥)。您可以控制主机ID。API密钥是由Conjur分配的随机生成的秘密
  • 它可以登录到Conjur并执行操作。
  • 它可以被授予角色和权限

主机在默认情况下也是一个角色,这意味着RBAC策略语句可以直接向主机角色授予权限。

例如,这里是声明主机的策略。

- !host id: www-01.home.cern annotations: description: Hypertext web server

当您加载这几行策略时,Conjur会执行相当多的活动,包括:

  • 为主机创建身份,并存储此信息。
  • 为主机分配一个API密钥,该密钥相当于用户的密码(password)。
  • 创建一个类主机的Conjur资源(Creates a Conjur resource of kind host)。主机可以被管理。主机可以分组并一起管理。
  • 创建一个类主机的Conjur角色(Creates a Conjur role of kind host)。可以授予角色访问存储在Conjur中的秘密的权限。可以授予其他角色对主机角色的访问权限。

层(Layers)

层是一组主机,用于将它们管理在一起,类似于一组用户。分配到层是主机获取权限的主要方式,也是用户获取主机访问权限的主要方式。出于后一个目的,用户也被列为层的成员

一个层包括:

  • 属于层的主机。层中的主机自动获得授予层的特权,例如获取秘密值的能力。
  • 成员是对层中的主机具有权限的用户。成员将自动被授予层中所有主机的特权。例如,可以通过将用户组添加到一个层来简化主机上的ssh权限管理。

下面是我们上面使用的主机策略,还有几行用于向新主机授予已授予层的所有权限。成员行允许层的所有成员访问该新主机。

- !host id: www-01.home.cern annotations: description: Hypertext web server - !grant role: !layer webservers member: !host www-01.cern.org * all members of the layer * can access this host

可以想象,WebServers层中可能有多个主机,其中多个管理用户或一组用户是声明的成员。它们都具有更改主机密码、轮换API键或更改影响主机的策略的权限,包括授予主机访问所需秘密的权限。这些秘密在策略的其他地方声明为Conjur变量

机器认证到Conjur

主机需要其身份(登录名和API密钥)来获取一个短期的签名证书(访问令牌),该证书提供对Conjur的访问。Conjur会验证访问令牌确实来自它所说的机器。只有这样,主机才能请求访问机密。

IP范围限制可应用于特定的机器和用户身份,以限制对特定网络位置的身份验证。例如,IP限制将阻止恶意程序或管理员先从操作服务器获取API密钥,然后从一个不同的网络位置(如个人工作站)使用该密钥。

机器授权以访问秘密

一台机器可以验证Conjur身份的一个主要原因是访问Conjur中的一个秘密。秘密(类变量的Conjur资源(Conjurresources of kind variables))向主机、层、用户或组授予权限,以允许不同级别的访问,例如读取、执行(获取秘密值)或更新。

以下是需要访问机密的机器的一些用例:

  • 应用程序使用Conjur API进行身份验证,并获取登录到Oracle数据库的密码(password)。
  • Ansible playbook使用Conjur集成进行身份验证,获取服务器登录凭据,并在启动应用程序之前将它们注入到play中。
  • Cloud Foundry或PCF应用程序使用Conjur集成进行身份验证,获取登录到Web服务的凭据,并在应用程序启动前将值注入环境中。

主机工厂(HostFactory)

在始终或经常生成新机器的情况下,管理单个机器身份及其相关主机策略可能是不切实际的。例如,虚拟环境通常会创建新的服务器和新的虚拟机;自动化工具(如Puppet和Chef)会为每个新的编排创建新的主机;CF或PCF会为容器中运行的每个应用程序创建机器身份。

对于这些情形,Conjur支持主机工厂服务,可以根据需要创建多个主机身份。主机工厂生成主机身份,这些身份分别进行认证,但在一个层中以相同的特权和权限自动管理在一起。

防止未经授权使用主机工厂的功能包括:通过IP范围限制主机工厂令牌的使用,将令牌设置为在创建后很快过期,随时撤销令牌。

作为机器的应用程序(Applications as machines)

使用Conjur API,应用程序可以使用以下序列访问所需的秘密:

  • 使用其身份获取访问令牌
  • 认证到Conjur
  • 获得授权获得的秘密

我们的各种集成产生了访问秘密的其他方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全观 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档