私はAPIを使用してGCPでサービスアカウントを作成しようとしています。私は、次のPOSTリクエストを送信するサービスアカウントを作成するには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を返し、サービスアカウントを作成します。
その後、これは私が特定の作成に使用するコードです役割:
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/viewer
の一つ、roles/editor
またはroles/owner
に設定されている場合。 しかし、私が使用したい場合、特にroles/cloudsql.viewer
このオプションはサポートされていません。
ここに役割があります。 https://cloud.google.com/iam/docs/understanding-roles
私は、このサービスアカウントに私のプロジェクトにフル視聴者権限を与えたくないのですが、それは最低限の特権の原則に反しています。
APIから特定の役割を設定するにはどうすればよいですか?
編集:ここ
は、リソース・マネージャAPIを使用して応答です:役割のコードで
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オプション 'をありがとう。本当に役に立ちました。 –