Spring Cloud Vault GCP-IAM身份验证
该GCP AUTH后端允许Vault通过使用现有的GCP(谷歌云端平台)IAM和GCE凭证登录。
GCP IAM身份验证为服务帐户创建JSON Web令牌(JWT)形式的签名。通过调用GCP IAM的projects.serviceAccounts.signJwt
API 获得服务帐户的JWT 。呼叫者针对GCP IAM进行身份验证,从而证明其身份。此Vault后端将GCP视为受信任的第三方。
IAM凭证可以从运行时环境(特别是GOOGLE_APPLICATION_CREDENTIALS
环境变量),Google Compute元数据服务获得,也可以从外部以JSON或base64编码的形式提供。JSON是首选格式,因为它带有调用projects.serviceAccounts.signJwt
所需的项目ID和服务帐户标识符。
示例102.20 bootstrap.yml具有必需的GCP-IAM身份验证属性
spring.cloud.vault: authentication: GCP_IAM gcp-iam: role: my-dev-role
示例102.21。具有所有GCP-IAM身份验证属性的bootstrap.yml
spring.cloud.vault: authentication: GCP_IAM gcp-iam: credentials: location: classpath:credentials.json encoded-key: e+KApn0= gcp-path: gcp jwt-validity: 15m project-id: my-project-id role: my-dev-role service-account-id: my-service@projectid.iam.gserviceaccount.com
role
设置尝试进行登录的角色的名称。credentials.location
包含JSON格式的Google凭据的凭据资源的路径。credentials.encoded-key
JSON格式的OAuth2帐户私钥的base64编码内容。gcp-path
设置要使用的GCP安装架的路径jwt-validity
配置JWT令牌有效性。默认为15分钟。project-id
允许将项目ID覆盖为特定值。从获得的凭据中默认为项目ID。service-account
允许将服务帐户ID覆盖为特定值。默认为获取的凭证中的服务帐户。
GCP IAM身份验证需要Google Cloud Java SDK依赖项(com.google.apis:google-api-services-iam
和com.google.auth:google-auth-library-oauth2-http
),因为身份验证实现使用Google API进行凭据和JWT签名。
Google凭据需要OAuth 2令牌来维护令牌的生命周期。所有API都是同步的,因此
GcpIamAuthentication
不支持AuthenticationSteps
,这是无功使用所必需的。
也可以看看:
更多建议: