当前位置: 首页 > 知识库问答 >
问题:

如何获得有效的令牌,以便在安装了SDK的本地计算机上使用GCP数据丢失防止API?

姚智
2023-03-14

所以我尝试使用request.post来使用SSL代理背后的API

url = 'https://dlp.googleapis.com/v2/projects/'+os.environ['PROJECT_ID']+'/content:inspect'

headers = {
    'Content-Type': 'application/json',
    'Authorization':  'Bearer {}'.format(subprocess.run('gcloud auth print-access-token', shell=True, check=True, stdout=subprocess.PIPE).stdout.decode().replace('\n', '').replace('\r', ''))
}

}
json_response = requests.post(url=url, json=parsed, headers=headers, proxies=proxies, verify=True)
json.loads(json_response.text)
gcloud auth print-access-token

在我的本地机器(Windows或Mac)上给我一段时间相同的令牌,每次我执行该命令时,我都会得到一个新的令牌。在我的本地机器上,如果我用cloudshell中的令牌替换gcloud命令的头,那么它可以正常工作。我的本地计算机和CloudShell上都有最新版本的SDK

问题1:预计每次我们在本地运行gcloud auth print-access-token(sdk)时,都会得到一个新的令牌?(在cloudshell上,在几分钟内,它是相同的标记)

共有1个答案

濮君植
2023-03-14

问题1:预计我们每次运行gcloud auth print-access-token Local(SDK)时,都会获得一个新的令牌?(在CloudShell上,这在几分钟内也是一样的)

答案取决于您运行代码的位置。当从Google compute服务(Cloud Shell是一个VM)运行时,令牌来自元数据服务器。我现在确定是否缓存了令牌或者缓存了多长时间。令牌有一个过期时间(默认为3600秒),因此元数据服务器很容易缓存令牌。如果您的代码运行在Google Cloud之外,答案取决于所使用的库。

问题2:生成令牌最简单/最好的方法是什么?因为在使用本地机器和SDK时,gcloud auth print-access-token似乎不是正确的方法。这不是一个有效的应用程序。这只是为了测试DLP API。

从CLI获取令牌只是为了测试。通常的方法是使用SDK。但是,由于您正在使用REST API,请阅读我编写的关于如何在自己的代码中创建令牌并在REST API中使用它们的这篇文章。我的文章包括Python源代码和一个调用Compute API以在项目中列出实例的示例。

Google Cloud-为REST API调用创建OAuth访问令牌

 类似资料:
  • Google数据丢失预防API支持.pdf还是.docx?我正在尝试在Java中对*.pdf文件做缩减,以隐藏敏感数据。 多谢!EMI

  • 我需要通过本地机器上的应用程序代码访问驻留在GCP bigQuery中的数据集。 我已经在本地机器的下载文件夹中创建了一个项目、服务帐户和下载的json文件(包含密钥)。服务帐户已授权,且GCP中所有必需的API均已启用。问题在于设置GOOGLE_应用程序_凭据环境变量。无法从cloud shell和windows cmd设置它。带有密钥的json文件当前存储在下载文件夹中。 我是否需要将json

  • 问题内容: 我可以用 获取mac地址,但是如果我在离线计算机上使用此代码,它将无法正常工作。 那么,如何获得Mac地址? 问题答案: 在Java 6+中,你可以使用。 请记住,计算机不能有网卡,尤其是嵌入式或虚拟的网卡。它也可以有多个。你可以使用来获取所有网卡的列表。

  • 问题内容: 我在具有其他几个版本的计算机上安装了Java 8(jdk-8u60-windows-x64.exe)。 安装后,我看到以下消息 我可以更改到新位置,但这不能解决以上消息。 当我编辑注册表并更改服务器注册表项时,我再次具有正常的配置。但这仍然是 改变似乎没有任何作用。当我将其更改为新安装的JDK时 要使我的计算机上运行1.8,我需要做什么?现在似乎已过时,我应该更改注册表吗?我应该怎么做

  • 问题内容: 我正在尝试在客户端计算机上安装Java Windows应用程序。我想检查计算机上是否安装了必需的JRE。我想通过Java程序而不是通过cmd命令进行检查 问题答案: 如果您使用的是Windows或Linux操作系统,则在命令提示符/终端中输入 如果正确安装了Java,那么您将得到类似的内容 旁注: 在Windows操作系统上安装Java之后,将PATH变量更改为添加java.exe,因

  • 问题内容: 我已经按照docker安装文档将其安装在运行Ubuntu 12.04的32位计算机上的机器上 步骤 没说 应该已经安装好了吧? 我也知道,Docker当前仅支持64位平台。 有什么方法可以安装它并使它在32位计算机上工作? 问题答案: 根据先决条件: 不管您的Ubuntu版本如何,Docker都需要64位安装。此外,您的内核必须至少为3.10。也可以接受最新的3.10次要版本或更新的维