我正在阅读云标识和访问管理方法: projects.serviceAccounts.signBlob的文档。我已经弄清楚了,除了身体
{
"bytesToSign": string
}文件上说这应该是
The bytes to sign.
A base64-encoded string.天啊,多有帮助啊!有人能解释一下bytesToSign是什么吗?我在那里放什么?服务帐户私钥?
发布于 2018-11-16 14:24:31
Google云平台 (GCP) IAM API方法projects.serviceAccounts.signBlob允许您使用给定服务帐户的系统管理私钥对大量数据进行加密“签名”。
更多信息:数字签名
权限
为了使用服务帐户对blobs进行签名,需要确保您的帐户在所讨论的服务帐户上具有iam.serviceAccounts.signBlob权限。最简单的方法是在项目或服务帐户上授予您的帐户服务帐户令牌创建器。此角色包含以下权限:
使用API
这个API端点有两个参数:
举个例子,假设您想要签署以下文本:
Here is some text that I would like to sign.
首先,您必须对字符串进行base64编码,该字符串变成:
SGVyZSBpcyBzb21lIHRleHQgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc2lnbi4=
然后,您将使用正文中的base64 64编码字符串发布到端点。例如,如果您的项目名为my-project,并且希望使用my默认服务帐户对blob进行签名,您可以这样做:
帖子:https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/my-project@appspot.gserviceaccount.com:signBlob?key={YOUR_API_KEY}
身体:
{
"bytesToSign": "SGVyZSBpcyBzb21lIHRleHQgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc2lnbi4="
}如果成功,它将使用用于签名blob的keyId和签名blob的signature返回响应。
示例:
{
"keyId": "f123aa7016e4565e49a489357aa384fa25a9e789",
"signature": "t7FT+3b0AUzqmGHofHIa8MDcfuBOKQa4/DtK6Ovel22Y9pa5G4PduW5iYY9EMQpyXW3sZEZiyFRs3M9nGkLt/DKXITCW9Ta4nvLZwNj1ahFjkujr12iUzyU+NR9/Db2LWoI/g4j1e27E9O8zqXdi+BQpKkOYHUcfbH3xcTbEJnmjU/1zEHztNRXlihNPyOjSWsKhPdVnVzxYmi6Y3Bmgb3kCZe5hhUhANo9gavsakSogi0y5z625vHiW3roQkH2fEktcDkf49GlLJEHqRu+FaCcAwgpsEs/Nm+llgfhSuHKx1tcvslmTWOGAnYDKVg74oqg4FgfhiLqBWJYRrFRwxQ=="
}您可以在这里用API资源管理器试试 (但是将项目名称更改为您的项目,并将服务帐户名称更改为您的服务帐户)。
这也可以通过古云来完成,例如:
$ gcloud iam service-accounts sign-blob \
--iam-account my-account@somedomain.com input.bin output.bin有关此命令如何与更广泛的云基础设施相关联的更多信息,请参见:
您可以使用它来向非Google服务断言您的身份。如果您想断言您向外部应用程序提供的某些文本实际上来自您,则可以使用signBlob方法对文本进行签名,以便使用您的私钥对文本进行签名,然后您可以使用get_public_certificates()方法获取可用于验证该签名的证书列表。
更多:向第三方服务断言身份
发布于 2018-11-17 18:21:09
感谢@lukwam和@John Hanley,答案是我不需要使用projects.serviceAccounts.signBlob,也就是说,这是一个兔子洞,我不需要掉下去。我收到了一条SigningError消息,我需要为服务帐户分配角色,正如我在这个问答中所详述的那样。
https://stackoverflow.com/questions/53329119
复制相似问题