在GCP上,我需要使用2个GCP项目;一个用于web应用程序,另一个用于存储web应用程序的机密(其结构来自google的存储库)
如自述文件中所述,我将使用GCP Secret Manager存储机密
该项目分配给GCP Secret Manager,用于组织共享的机密。
在prj应用程序中,我想使用工作负载标识,因为我不想使用serviceFactkey doc说
>
使用-workload pool=project-id.svc创建cluser。id.goog
选项
头盔安装kubernetes-外部-秘密
[跳过]kubectl创建名称空间k8s名称空间(因为我在default
name space上安装了kubernetes external secrets)
[skip]kubectl create serviceaccount——名称空间k8s名称空间ksa名称(因为我在创建GKE时使用default
serviceaccount和默认存在)
使用模块“工作负载标识”创建谷歌服务帐户
module "workload-identity" {
source = "github.com/terraform-google-modules/terraform-google-kubernetes-engine//modules/workload-identity"
use_existing_k8s_sa = true
cluster_name = var.cluster_name
location = var.cluter_locaton
k8s_sa_name = "external-secrets-kubernetes-external-secrets"
name = "external-secrets-kubernetes"
roles = ["roles/secretmanager.admin","roles/secretmanager.secretAccessor"]
project_id = var.project_id #it is prj-aplication's project_id
}
kubernetes_服务帐户名为外部机密kubernetes external secrets
,在使用helm安装kubernetes external secrets
时已创建。它绑定了k8s_sa_的名字
apiVersion: kubernetes-client.io/v1
kind: ExternalSecret
metadata:
name: external-key-test
spec:
backendType: gcpSecretsManager
projectId: my-domain
data:
- key: key-test
name: password
错误,7权限被拒绝:权限“secretmanager”。版本。“资源”项目/项目id/机密/外部密钥测试/版本/最新版本的访问被拒绝”(或者它可能不存在)。
我已经检查过了,如果我的prj秘密和prj申请是同一个项目,它是有效的。
所以我想的是,kubernetes serviceaccount(prj秘密)
我想知道是否有人知道
工作负载标识是否仅适用于同一项目
非常感谢。
@纪尧姆·布拉奎尔
非常感谢您的友好回复。
我做了service帐户external-secrets-kubernetes@my-project-id.iam.gserviceaccount.commy-project id是prj-Application
更新:(v1):删除,因为没有正确的
<罢工> 关于secret_id,它的 prj-秘密
现在。
更新:(v1)补充结论
我明白。
外部秘密-kubernetes@prj-申请。国际机械师协会。gserviceaccount。com
再次感谢您@guillaume blaquiere
更新:(v1):删除,因为没有正确的
但后来我遇到了问题;IAM绑定看起来不起作用。
在目前的结构中,我需要在
不是吗?
但我无法约束它。
$gCloud iam service-帐户添加-iam-策略-绑定-角色角色/iam.workload标识用户-成员"service帐户:prj-application.svc.id.goog[默认/外部-秘密-kubernetes-outter-秘密]"external-secrets-kubernetes@prj-secret.iam.gserviceaccount.com
错误:(gcloud.iam.service accounts.add iam policy binding)未找到:服务帐户项目/prj应用程序/serviceAccounts/external secrets-kubernetes@prj-秘密。国际机械师协会。gserviceaccount。com不存在。
基于错误,在prj应用程序中,我没有serviceaccount外部机密-kubernetes@prj-秘密。国际机械师协会。gserviceaccount。com,(我知道,因为我改变了现状)
所以绑定prj应用程序的k8s serviceaccount
我想你的角色约束有问题。当你这么说的时候:
kubernetes_服务帐户名为external secrets kubernetes external secrets,是在安装kubernetes external secrets和helm时创建的。它绑定了k8s_sa_的名字
还不清楚。
外部秘密-kubernetes@my-project-id.iam。gserviceaccount。com,
是在哪个项目上创建的?我猜是在prj申请中,但不清楚
如果你做了第一个,这是错误的绑定,服务帐户只能访问prj应用程序的机密,而不能访问这些prj机密。
请注意,如果您只需要访问机密,则不要授予管理员角色,只需要访问器。
我试图在Composer 2环境中运行GKEStartPodOperator/KubernetesPodOperator任务,该环境在自动驾驶模式下使用GKE集群。我们有一个现有的Composer 1环境,GKE集群不处于自动驾驶模式。我们使用谷歌云平台服务(BigQuery、GCS等)进行身份验证的任务在Composer 2环境中失败,但在Composer 1环境中成功。 在日志文件中,我可以看
Google docu表示,工作负载标识可以用来授权GKE POD使用Google API提供的服务(而且效果很好)。它还表示,将有一个自动创建的标识池,名为PROJECT\u ID.svc。id.goog。 关于工作负载标识联合的Docu说:“您可以使用工作负载标识池来组织和管理外部标识。” 在我按照这里所述配置了工作负载标识(并且工作正常)之后,我正在尝试检索项目中现有的工作负载标识池,我希望
我使用Cloud Composer在Kubernetes中运行任务来安排作业。我在与composer相同的GKE中设置了一个新的节点池,并使用它来运行Kubernetes任务。在该节点池中,我使用默认服务帐户,但将该帐户绑定到与Composer节点池相同的服务帐户,使用IAM策略绑定,并启用工作负载标识。 然而,我可以从错误中看到kubernetes服务号缺少作曲家服务号可以访问的一些东西的权限。
我目前正在使用GKE Workload Identity从GKE内部访问谷歌云平台资源。这对谷歌云存储和其他平台资源非常有效。 然而,当我试图使用GKE Workload Identity访问Google工作表时,我遇到了一个“身份验证范围不足”的问题。 当我为服务帐户生成密钥文件并在代码中使用它时,我可以手动将作用域设置为。它的工作原理与预期一样,我可以访问该表。如果我将范围更改为,我得到了与G
有人知道如果有任何其他方式的认证/授权访问谷歌云存储除了服务帐户密钥,当我使用@谷歌云/存储Node.js模块从这里?我读过关于“工作负载标识联合”的文章,但是在我看来,当我使用@google-Cloud/存储库时,我不能使用这种方法。我找不到任何合适的构造函数,只有这两个: 有什么建议吗?谢谢你们
试图找出如何从GKE集群中使用存储API进行身份验证。 代码: 被记录为使用以下方法通过API进行身份验证: {@code GOOGLE_APPLICATION_Credentials}环境变量指向的凭据文件 应用程序正在使用GCP工作负载标识功能,因此应用程序(群集内)服务号注释为: 现在,调用存储帐户失败,出现以下错误: 这让我觉得工作负载标识工作不正常。我希望收到带注释的服务帐户的错误消息,