BeyondCorp Enterprise 的一个主要原则是“服务访问权限的授予基于我们对您和您的设备的了解”。通过查询多个数据源,可以动态推断为单个用户或单个设备授予的访问权限级别。BeyondCorp Enterprise 在决策过程中会使用此信任级别。
Access Context Manager 是 BeyondCorp Enterprise 的零信任政策引擎。借助 Access Context Manager,管理员可以为应用和 Google Cloud 资源定义基于特性、精细访问权限控制。
使用访问权限级别,根据请求的上下文信息来确定是否允许访问资源。通过使用访问权限级别,您可以开始组织信任层级。例如,您可以创建一个名为 High_Level
的访问权限级别,允许一组具有高度特权的个人发出请求。您还可以标识一个要信任的更常规群组,例如您希望允许来自哪个 IP 范围。在这种情况下,您可以创建一个名为 Medium_Level
的访问权限级别来允许这些请求。
零信任访问的一项关键要求是,仅当设备由公司管理或归公司所有时,才允许其访问。您可以通过多种方法确定设备是否归公司所有,一种方法是确定设备上是否存在由公司颁发的有效证书。设备上是否存在企业证书可用于指示设备为公司所有。
用于情境感知访问权限的企业证书是基于 BeyondCorp Enterprise 证书的访问权限解决方案的整体功能之一。此功能利用设备证书作为替代的情境感知信号来确定设备是否是公司自有资产。Chrome 浏览器 110 或更高版本支持此功能。
由于一台设备可以有多个证书,因此可以通过宏 .exist(e,p)
访问自定义访问权限级别中的企业证书:
device.certificates.exists(cert, predicate)
在此示例中,cert
是将在 predicator
中使用的简单标识符,它绑定到设备证书。exist()
宏使用“或”(||) 运算符将每个元素的谓词结果组合在一起,这意味着如果至少有一个证书满足 predicate
表达式,则宏会返回 true。
该证书具有以下可以一起检查的属性。请注意,比较字符串时区分大小写。
属性 | 说明 | 谓词表达式示例(其中 cert 是宏的标识符) |
---|---|---|
is_valid |
如果证书有效且未过期,则返回 true(布尔值)。 | cert.is_valid |
cert_fingerprint |
证书指纹(未填充字符的 base64 编码 SHA256) 指纹是 DER 编码证书的二进制格式,是未填充的 base64 编码的 SHA256 摘要。您可以使用 OpenSSL 的以下步骤从证书生成 PEM 格式的字符串:
|
cert.cert_fingerprint == origin.clientCertFingerprint()
|
root_ca_fingerprint |
用于签署证书的根 CA 证书的指纹(未填充字符的 base64 编码 SHA256)。
指纹是 DER 编码证书的二进制格式,是未填充的 base64 编码的 SHA256 摘要。您可以使用 OpenSSL 的以下步骤从证书生成 PEM 格式的字符串:
|
cert.root_ca_fingerprint == "the_fingerprint" |
issuer |
证书颁发者名称(全称) 如需查找证书颁发者名称,您可以使用以下方法: 在证书上运行以下命令:
$ openssl x509 -in ca_1.crt -issuer
issuer= /C=IN/ST=UP/L=NCR/O=BCEDemo/OU=BCEDemo_1/CN=inter_1/emailAddress=test_inter1@beyondcorp.in
访问权限级别中使用的证书颁发者字符串是输出的相反值,并且将“/”替换为逗号。例如:
|
cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN" |
subject |
证书的主题名称(全称)。 | cert.subject == "CA_SUB" |
serial_number |
证书的序列号(字符串) | cert.serial_number = "123456789" |
template_id |
证书的 X.509 扩展程序证书模板的模板 ID(字符串)。 | cert.template_id = "1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047" |
下表包含您可以设置的政策示例:
政策示例 | 表达式 |
---|---|
设备具有由公司根证书签署的有效证书。 | device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "ROOT_CA_FINGERPRINT")
|
设备具有由颁发者 CA_ABC. 颁发的有效证书 |
device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")
|
配置企业证书
在配置企业证书之前,请确保您已配置自定义访问权限级别。有关说明,请参阅创建自定义访问权限级别。
您可以使用 Access Context Manager 自定义访问权限级别定义来设置适当的政策。自定义访问权限级别使用以通用表达式语言 (CEL) 子集编写的布尔表达式来测试发出请求的客户端的属性。
在管理控制台中上传信任锚
为了让 BeyondCorp Enterprise 收集并验证设备企业证书,您必须上传用于颁发设备证书的信任锚。这里的信任锚是指自签名的根 CA(证书授权机构)证书以及相关的中间证书和从属证书。如需上传信任锚,请完成以下步骤:
- 前往管理控制台,然后依次前往设备 > 网络 > 证书。
- 选择适当的组织单元。
- 选择添加证书。
- 输入证书名称。
- 上传证书。
- 选中端点验证复选框。
- 点击添加。
- 确保用户属于上传信任锚的组织部门。
配置 AutoSelectCertificateForUrls 政策
为了让端点验证功能搜索设备证书并通过 Chrome 收集该证书,您必须完成以下步骤来配置 AutoSelectCertificateFor网址s Chrome 政策:
确保 Chrome 浏览器由 Chrome 浏览器云管理服务管理。
- [Win/OSX/Linux] 使用 CBCM https://support.google.com/chrome/a/answer/9301891 设置托管 Chrome 浏览器。
- [Chrome]:将设备注册到企业。
在管理控制台中,添加 AutoSelectCertificateForUrls 政策:
- 前往管理控制台,然后依次前往设备 > Chrome > 设置 > 用户和浏览器设置 > 客户端证书。
- 选择适当的组织单元。
添加政策 AutoSelectCertificateForUrls,如以下示例所示:
{"pattern":"https://[*.]clients6.google.com","filter":{"ISSUER":{"CN":"CERTIFICATE_ISSUER_NAME"}}}
将 CERTIFICATE_ISSUER_NAME 替换为根 CA 的通用名称。请勿修改
pattern
的值。
要验证政策配置,请完成以下步骤:
- 导航到浏览器中的 chrome://policy。
- 验证 AutoSelectCertificateForUrls 的已配置值。
- 确保将政策适用对象值设置为机器。在 Chrome 操作系统中,该值将应用于 Current User*。
- 确保政策的状态没有冲突。
排查配置问题
查看设备详细信息页面上的证书属性,确保正确列出了证书属性。
您可以借助端点验证日志来排查任何问题。如需下载 Endpoint Verification 日志,请完成以下步骤:
- 右键点击端点验证扩展程序,然后转到选项。
- 选择日志级别 > 全部 > 下载日志。
- 创建 Cloud Customer Care 支持请求并共享日志以供进一步调试。