Google cloud platform 例如,与gcp控制台相比,gcloud cli显示的可授予角色更少

Google cloud platform 例如,与gcp控制台相比,gcloud cli显示的可授予角色更少,google-cloud-platform,gcloud,google-cloud-bigtable,bigtable,google-cloud-iam,Google Cloud Platform,Gcloud,Google Cloud Bigtable,Bigtable,Google Cloud Iam,我试图以编程方式为bigtable实例的成员分配角色。 我使用gcloudcli上的list grantable roles调用查看可以分配哪些角色。它只返回以下三个角色,而gcp控制台显示的角色比这三个角色多。原因是什么 下面是gcloud列出可授予的角色response description: AutoML service agent can act as Cloud Storage admin and export BigQuery tables, which can be back

我试图以编程方式为bigtable实例的成员分配角色。 我使用
gcloud
cli上的
list grantable roles
调用查看可以分配哪些角色。它只返回以下三个角色,而gcp控制台显示的角色比这三个角色多。原因是什么

下面是
gcloud列出可授予的角色
response

description: AutoML service agent can act as Cloud Storage admin and export BigQuery
  tables, which can be backed by Cloud Storage and Cloud Bigtable.
name: roles/automl.serviceAgent
title: AutoML Service Agent

description: Gives Cloud Data Fusion service account access to Service Networking,
  Cloud Dataproc, Cloud Storage, BigQuery, Cloud Spanner, and Cloud Bigtable resources.
name: roles/datafusion.serviceAgent
title: Cloud Data Fusion API Service Agent

description: Security reviewer role, with permissions to get any IAM policy.
name: roles/iam.securityReviewer
title: Security Reviewer
下面是一个bigtable实例的
gcp控制台的屏幕截图


编辑

这里我展示了我使用的gcloud命令。 还有一点很有趣,
list grantable roles
命令不接受
--uri
调用的结果,但是当我删除v2并将bigtableadmin更改为bigadmin时,它就工作了


您没有提供正在运行的特定命令,但我怀疑您可能需要引用Bigtable实例(或者可能只是启用了Bigtable服务的项目)才能查看Bigtable特定角色的完整枚举

无论如何,如果您通过在控制台中查找角色或使用角色文档()了解角色,那么您应该能够在向标识授予权限的命令中指定该角色,即

gcloud项目添加iam策略绑定${PROJECT}\
--成员=\
--role=roles/bigtable.admin
201209更新 您能确认您的默认(活期)账户的角色吗

您应该能够:

CURRENT=$(gcloud配置获取值帐户)
gcloud项目获取iam策略${PROJECT}\
--展平=“绑定[]。成员[]”\
--filter=“bindings.members=user:${CURRENT}”\
--format=“value(bindings.role)”
我创建了一个具有
Editor
权限的服务帐户,它可以枚举所有角色

PROJECT=[[YOUR-PROJECT]]
ACCOUNT=[[YOUR-ACCOUNT].#也许是“bigtable tester”`
电子邮件=“${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com”
#创建测试服务帐户、密钥并将其分配给项目/查看器
gcloud iam服务帐户创建${ACCOUNT}\
--项目=${project}
gcloud iam服务帐户密钥创建。/${ACCOUNT}.json\
--iam帐户=${EMAIL}\
--项目=${project}
gcloud项目添加iam策略绑定${PROJECT}\
--角色=角色/编辑\
--成员=服务帐户:${EMAIL}
#作为服务帐户进行身份验证
#保留经常账户
当前=$(gcloud配置获取值帐户)
#激活服务帐户(这将更改默认帐户)
gcloud身份验证激活服务帐户${EMAIL}\
--密钥文件=../${ACCOUNT}.json
#恢复到您原来的帐户
gcloud配置集帐户/${CURRENT}
#使用服务帐户尝试列表
BIGTABLE=“//BIGTABLE.googleapis.com”
INSTANCE=“testinstance”#或其他
RESOURCE=“${BIGTABLE}/projects/${PROJECT}/instances/${INSTANCE}”
gcloud iam列表可授予角色${RESOURCE}\
--帐户=${EMAIL}\
--项目=${project}\
--format=“值(名称)”
对我来说,这返回:

roles/automl.serviceAgent
roles/bigtable.admin
roles/bigtable.reader
roles/bigtable.user
roles/bigtable.viewer
roles/datafusion.serviceAgent
roles/iam.securityAdmin
roles/iam.securityReviewer
并使用Node.JS的API客户端库:

const{google}=require(“googleapis”);
const iam=google.iam({
“版本”:“v1”,
});
const BIGTABLE=“BIGTABLE.googleapis.com”;
const PROJECT=process.env.PROJECT;
const INSTANCE=process.env.INSTANCE;
const RESOURCE=`/${BIGTABLE}/projects/${PROJECT}/instances/${INSTANCE}`;
异步函数main(){
const auth=new google.auth.GoogleAuth({
范围:[”https://www.googleapis.com/auth/cloud-platform"]
});
const authClient=wait auth.getClient();
log(`Requesting:${RESOURCE}`);
常数rqst={
fullResourceName:RESOURCE,
auth:authClient
};
const resp=等待iam.roles.queryGrantableRoles(rqst);
常数数据=相应数据;
data.roles.forEach(role=>{console.log(role.name);});
}
main().catch(console.error);
请参阅API Explorer测试和代码示例:


我不知道。我检查了CLI和UI的请求,结果是一样的。它可能是被编码的。不知道……您能提供用于检查可授予角色的完整命令吗?我编辑了我的问题,添加了命令@Happy MonadHanks for your time@GuillaumeBlaquierew当您将--page size=100和--format=json添加到您的命令时会发生什么?我需要通过api调用向我的用户显示可用的角色,而不是为我自己的项目添加这些角色。我还编辑了我的问题以显示您请求的命令。谢谢你打算用哪种语言?今天早上我会尝试一下,如果可以的话,我会提供代码给你我正在使用gcp node.js sdk。