나는 API를 사용하여 GCP에서 서비스 계정을 만들려고했습니다.api를 통해 서비스 계정에 대해 cloudsql 역할을 만들 수 없습니다
이base_url = f"https://iam.googleapis.com/v1/projects/{project}/serviceAccounts"
auth = f"?access_token={access_token}"
data = {"accountId": name}
# Create a service Account
r = requests.post(base_url + auth, json=data)
이 200를 반환하고 서비스 계정 생성 :
나는 다음 포스트 요청을 보내 서비스 계정을 만들려면 다음을, 이것은 내가 특정을 만드는 데 사용하는 코드는 역할 : 역할 roles/viewer
, roles/editor
또는 roles/owner
이 방법은 작업을 수행 중 하나로 설정됩니다
sa = f"{name}@dotmudus-service.iam.gserviceaccount.com"
sa_url = base_url + f'/{sa}:setIamPolicy' + auth
data = {"policy":
{"bindings": [
{
"role": roles,
"members":
[
f"serviceAccount:{sa}"
]
}
]}
}
합니다. 그러나 사용하고 싶다면 특별히 roles/cloudsql.viewer
api는이 옵션이 지원되지 않는다고 전합니다.
다음은 역할입니다.
저는이 서비스 계정에 내 프로젝트에 대한 전체 권한을 부여하고 싶지 않습니다. 최소한의 권한 원칙에 위배됩니다.
어떻게하면 API에서 특정 역할을 설정할 수 있습니까?
편집 : 당신이하지 않은 최초의 base_url
에 추가되어 나타납니다 roles/cloudsql.admin
와 코드와
POST https://cloudresourcemanager.googleapis.com/v1/projects/{project}:setIamPolicy?key={YOUR_API_KEY}
{
"policy": {
"bindings": [
{
"members": [
"serviceAccount:[email protected]{project}.iam.gserviceaccount.com"
],
"role": "roles/cloudsql.viewer"
}
]
}
}
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.cloudresourcemanager.projects.v1beta1.ProjectIamPolicyError",
"type": "SOLO_REQUIRE_TOS_ACCEPTOR",
"role": "roles/owner"
}
]
}
}
내 업데이트 된 질문을 참조하십시오. 서비스 계정에 대한 역할을 만드는 데 잘못된 형식이있는 것 같습니다. 나는 더 나은 문서를 찾을 수는 없지만. –
의견에 공백이 있기 때문에 더 많은 정보를 내 게시물에 추가했습니다. – gdahlm
'--log-http 옵션 '에 감사드립니다. 정말 도움이되었습니다. –