为代理授权

本指南介绍了如何在虚拟机实例上安装私钥服务帐号凭据,以便为 Stackdriver Logging 和 Monitoring 代理授权。

如果以下任何一项适用于您,请阅读本指南:

  • 您知道自己需要安装这些凭据。例如,您正在使用 Amazon EC2 虚拟机实例

  • 您怀疑自己的虚拟机实例上的现有凭据无效,并且您希望将其替换为可用的凭据。

您可以使用以下命令检查 Compute Engine 上的授权范围:

    curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes

在输出中查找以下一个或多个授权范围:

  https://www.googleapis.com/auth/logging.write
  https://www.googleapis.com/auth/logging.admin.

添加凭据

授权过程用于确定经过身份验证的客户端对一组资源具有哪些权限。

要在虚拟机实例上为 Stackdriver Logging 和 Monitoring 代理授权,需完成以下步骤:

  1. 在与虚拟机实例相关联的 GCP 项目中,使用所需的权限和私钥凭据创建服务帐号。对于 Amazon EC2 虚拟机实例,请在 Stackdriver 在您连接 AWS 帐号时代表您创建的 AWS Link 项目中执行此操作。

  2. 将私钥凭据复制到您的虚拟机实例,在此它们充当您的实例上运行的软件的应用默认凭据

  3. 安装或重启代理

创建服务帐号

身份验证过程用于确定客户端的身份。对于身份验证,我们建议您使用服务帐号;它是与您的 GCP 项目关联的 Google 帐号,并不代表某个特定用户。无论代码在何处(本地、Compute Engine、App Engine 或内部等)运行,服务帐号都可用于身份验证。如需了解详情,请参阅身份验证概览

要创建服务帐号,请按照创建服务帐号中的相关说明操作。在角色下拉菜单中,选择以下两个角色:

  • Logging > 日志写入者。这将为 Stackdriver Logging 代理授权。
  • Monitoring > 监控指标写入者。这将为 Stackdriver Monitoring 代理授权。添加此角色可让您使用此服务帐号来运行这两个 Stackdriver 代理。

为了方便您遵循以下说明,请将变量 CREDS 设置为指向工作站上的凭据文件。例如:

    CREDS="~/Downloads/[PROJECT-NAME]-[KEY-ID].json"

将私钥复制到您的实例

要使已添加的服务帐号凭据被识别,您必须将私钥文件复制到虚拟机实例上的以下某个位置(可使用任何文件复制工具):

  • 仅限 Linux 系统/etc/google/auth/application_default_credentials.json
  • 仅限 Windows 系统C:\ProgramData\Google\Auth\application_default_credentials.json
  • Linux 或 Windows 系统:您存储在变量 GOOGLE_APPLICATION_CREDENTIALS 中的任意位置。此变量必须对代理进程可见。

以下文件复制说明假定您的工作站和实例上都采用 Linux 环境。如果您使用的是其他环境,请参阅云提供商的文档以了解如何复制私钥文件。在上一步(即创建服务帐号)中,您的私钥凭据应该已存储在您的工作站上变量 CREDS 中保存的位置:

Compute Engine

在您的工作站上,请使用 gcloud 命令行工具。您可以在 GCP Console 的虚拟机实例页面中找到 [YOUR-INSTANCE-NAME][YOUR-INSTANCE-ZONE]

REMOTE_USER="$USER"
INSTANCE="[YOUR-INSTANCE-NAME]"
ZONE="[YOUR-INSTANCE-ZONE]"
gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"

在您的 Compute Engine 实例上,运行以下命令:

GOOGLE_APPLICATION_CREDENTIALS="/etc/google/auth/application_default_credentials.json"
sudo mkdir -p /etc/google/auth
sudo mv "$HOME/temp.json" "$GOOGLE_APPLICATION_CREDENTIALS"
sudo chown root:root "$GOOGLE_APPLICATION_CREDENTIALS"
sudo chmod 0400 "$GOOGLE_APPLICATION_CREDENTIALS"

Amazon EC2

在您的工作站上,使用 scp 运行以下代码:

KEY="[YOUR-SSH-KEY-PAIR-FILE]"
INSTANCE="ec2-[YOUR-INSTANCE'S-PUBLIC-ID.[YOUR-ZONE].compute.amazonaws.com"
# The remote user depends on the installed OS: ec2-user, ubuntu, root, etc.
REMOTE_USER="ec2-user"
scp -i "$KEY" "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json"

在您的 EC2 实例上,运行以下命令:

GOOGLE_APPLICATION_CREDENTIALS="/etc/google/auth/application_default_credentials.json"
sudo mkdir -p /etc/google/auth
sudo mv "$HOME/temp.json" "$GOOGLE_APPLICATION_CREDENTIALS"
sudo chown root:root "$GOOGLE_APPLICATION_CREDENTIALS"
sudo chmod 0400 "$GOOGLE_APPLICATION_CREDENTIALS"

后续步骤

您的虚拟机实例现在有了代理所需的凭据。

  • 如果您尚未安装代理,请返回到代理安装页面并安装代理。如需查看说明,请参阅安装 Logging 代理
  • 如果您已经安装了此代理,请重启此代理以使用新凭据。如需查看说明,请参阅重启代理
  • 如果您想再次检查这些凭据,请参阅验证私钥凭据
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Logging
需要帮助?请访问我们的支持页面