googleapis/enterprise-certificate-proxy
GitHub: googleapis/enterprise-certificate-proxy
Google 企业证书代理(ECP)是一组代理与动态库模块,使 gcloud CLI 等客户端能够利用操作系统密钥库中的设备证书完成与 Google Cloud 的相互 TLS 认证。
Stars: 32 | Forks: 21
# Google 企业证书代理 (GA)
## 基于证书的访问
如果您使用[基于证书的访问][cba]来保护您的 Google Cloud 资源,终端用户[设备证书][clientcert]是在授予资源访问权限之前验证的凭据之一。通过使用企业证书功能,您可以配置 Google Cloud 在验证来自 gcloud CLI 或 Terraform 的资源访问时,使用操作系统密钥库中的设备证书。
## Google 企业证书代理 (ECP)
Google 企业证书代理 (ECP) 是 [Google Cloud 零信任架构][zerotrust]的一部分,可实现与[客户端证书][clientcert]的相互认证。此代码库包含一组代理/模块,可供客户端或工具用来与存储在[受保护的密钥存储系统][keystore]中的证书进行交互。
要与客户端证书进行交互,应用程序代码无需直接使用此代码库中的大多数代理。相反,应用程序应利用 Google 提供的客户端和工具(例如 [Cloud SDK](https://cloud.google.com/sdk)),以获得更便捷的开发者体验。
## 兼容性
ECP 支持以下平台/密钥库:
- MacOS: __Keychain__
- Linux: __PKCS#11__
- Windows: __MY__
## 用户指南
在您的应用程序/客户端中使用 ECP 之前,您应完成[为企业证书启用 CBA][enterprisecert] 中记录的策略配置。本 README 的其余部分重点介绍客户端配置。
### 快速开始
1. 通过以下链接安装 gcloud CLI (Cloud SDK): https://cloud.google.com/sdk/docs/install。安装时请启用捆绑的 python 选项。
1. **注意:** 需要 gcloud 416.0 或更高版本。建议使用 430.0 或更高版本。
2. 对于 macOS 和 Linux,下载后请运行 install.sh 脚本以完成安装。
$ ./google-cloud-sdk/install.sh
3. 安装 ECP 辅助组件:
$ gcloud components install enterprise-certificate-proxy
4. 初始化 ECP 证书配置:
* **MacOS** `$ gcloud auth enterprise-certificate-config create macos --issuer=`
* **Linux** `$ gcloud auth enterprise-certificate-config create linux --label= --module= --slot=`
* **Windows** `$ gcloud auth enterprise-certificate-config create windows --issuer= --provider= --store=`
5. 通过 gcloud CLI config 命令启用客户端证书的使用:
$ gcloud config set context_aware/use_client_certificate true
6. 您现在可以使用 gcloud 访问受 CBA 保护的 GCP 资源。例如:
$ gcloud pubsub topics list
### 手动证书配置
ECP 依赖于证书配置 JSON 文件来读取用于定位证书的所有元数据信息。
默认情况下,它被命名为 `certificate_config.json` 并存储在用户设备上的以下位置:
* **Linux 和 MacOS**: `~/.config/gcloud/certificate_config.json`
* **Windows**: `%APPDATA%\gcloud\certificate_config.json`
您可以将该 JSON 文件放在您选择的位置,并使用以下命令设置其路径:
```
$ gcloud config set context_aware/certificate_config_file_path ""
```
设置 JSON 文件位置的另一种方法是使用 `GOOGLE_API_CERTIFICATE_CONFIG` 环境变量。
```
$ export GOOGLE_API_CERTIFICATE_CONFIG=""
```
以下是证书配置文件的示例:
#### MacOS (Keychain)
```
{
"cert_configs": {
"macos_keychain": {
"issuer": "YOUR_CERT_ISSUER"
}
},
"libs": {
"ecp": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/bin/ecp",
"ecp_client": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/platform/enterprise_cert/libecp.dylib",
"tls_offload": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/platform/enterprise_cert/libtls_offload.dylib"
},
"version": 1
}
```
#### Windows (MyStore)
```
{
"cert_configs": {
"windows_store": {
"store": "MY",
"provider": "current_user",
"issuer": "YOUR_CERT_ISSUER"
}
},
"libs": {
"ecp": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/bin/ecp.exe",
"ecp_client": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/platform/enterprise_cert/libecp.dll",
"tls_offload": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/platform/enterprise_cert/libtls_offload.dll"
},
"version": 1
}
```
#### Linux (PKCS#11)
```
{
"cert_configs": {
"pkcs11": {
"label": "YOUR_TOKEN_LABEL",
"user_pin": "YOUR_PIN",
"slot": "YOUR_SLOT",
"module": "The PKCS #11 module library file path"
}
},
"libs": {
"ecp": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/bin/ecp",
"ecp_client": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/platform/enterprise_cert/libecp.so",
"tls_offload": "[GCLOUD-INSTALL-LOCATION]/google-cloud-sdk/platform/enterprise_cert/libtls_offload.so"
},
"version": 1
}
```
### 日志记录
要启用日志记录,请设置 `ENABLE_ENTERPRISE_CERTIFICATE_LOGS` 环境变量。
#### 示例
```
$ export ENABLE_ENTERPRISE_CERTIFICATE_LOGS=1 # Now the enterprise-certificate-proxy will output logs to stdout.
```
## 从源码构建 ECP 二进制文件
对于 amd64 MacOS,运行 `./build/scripts/darwin_amd64.sh`。二进制文件将被放置在 `build/bin/darwin_amd64` 文件夹中。
对于 amd64 Linux,运行 `./build/scripts/linux_amd64.sh`。二进制文件将被放置在 `build/bin/linux_amd64` 文件夹中。
对于 amd64 Windows,在 powershell 终端中,运行 `.\build\scripts\windows_amd64.ps1`。二进制文件将被放置在 `build\bin\windows_amd64` 文件夹中。
请注意,编译 Windows 共享库需要 gcc。在 Windows 上获取 gcc 的最简单方法是下载 Mingw64,并将 "gcc.exe" 添加到 powershell 路径中。
## 许可证
Apache - 有关更多信息,请参阅 [LICENSE](./LICENSE)。
标签:AI合规, Cutter, EVTX分析, 日志审计