【发布时间】:2021-12-06 04:54:39
【问题描述】:
我正在尝试为 google 服务帐户生成签名的 JWT 令牌
now = int(time.time())
expires = now + 900 # 15 mins in seconds, can't be longer.
payload = {
'iat': now,
'exp': expires,
'sub': 'somekey@someproject.iam.gserviceaccount.com',
'aud': 'aud'
}
body = {'payload': json.dumps(payload)}
name = 'projects/someproject/serviceAccounts/somekey@someproject.iam.gserviceaccount.com'
iam = googleapiclient.discovery.build('iam', 'v1', credentials=credentials)
request = iam.projects().serviceAccounts().signJwt(name=name, body=body)
resp = request.execute()
jwt = resp['signedJwt']
我面临的问题是关于凭据 如果我使用
credentials = service_account.Credentials.from_service_account_info(gcp_json_credentials_dict)
工作正常。
但我正在尝试使用默认服务帐户
credentials, your_project_id = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
出现以下错误 -
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://iam.googleapis.com/v1/projects/someproject/serviceAccounts/somekey@someproject.iam.gserviceaccount.com:signJwt?alt=json returned "Permission iam.serviceAccounts.signJwt is required to perform this operation on service account
【问题讨论】:
-
您确定使用的默认服务帐户实际上具有 iam.serviceAccounts.signJwt 权限吗?您可以使用 credentials.service_account_email 检查 sa 电子邮件,以确认默认凭据是您期望的 SA。
-
它返回“默认”
标签: google-cloud-platform impersonation service-accounts google-iam google-cloud-iam