エージェントの承認

このガイドでは、Cloud Logging エージェントを承認するために、VM インスタンスに秘密鍵サービス アカウント認証情報をインストールする方法を説明します。エージェントをインストールする前に、エージェントが必要とする認証情報が VM インスタンスに存在することを確認します。エージェントには、Logging に情報を送信するための権限が必要です。権限は、VM インスタンスに保存されている、エージェントのアプリケーションのデフォルト認証情報として機能するサービス アカウント認証情報を使用することによって付与されます。

始める前に

このガイドは、次のいずれかの場合にお読みください。

  • 非常に古い Compute Engine インスタンス、またはデフォルトの認証情報なしで作成された Compute Engine インスタンスを実行する場合は、エージェントをインストールする前にこのガイドの手順を完了する必要があります。これらの VM には、必要な秘密鍵認証情報がない可能性があります。認証情報を確認するには、Compute Engine 認証情報の確認の手順を行います。新しく作成された Compute Engine VM インスタンスでは、インスタンスのデフォルトのサービス アカウントにエージェントが必要とする認証情報があります。

  • AWS EC2 VM インスタンスを実行している場合は、エージェントをインストールする前にこのガイドの手順を完了する必要があります。Amazon EC2 VM インスタンスには、必要なサービス アカウントがありません。代わりに、AWS コネクタ プロジェクトのサービス アカウントから秘密鍵認証情報を手動で取得する必要があります。インスタンスに秘密鍵認証情報がすでに存在すると思われる場合は、秘密鍵認証情報を確認するの手順で秘密鍵認証情報を確認します。秘密鍵認証情報を追加するには、認証情報の追加に進みます。

次のコマンドを使用して、Compute Engine の承認スコープをチェックできます。

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

出力で次の 1 つまたは複数の承認スコープを探します。

https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/logging.admin
https://www.googleapis.com/auth/cloud-platform

認証情報の追加

「承認」とは、認証されたクライアントが一連のリソースに対してどのような権限を持つかを決定するためのプロセスです。

VM インスタンスで Logging エージェントを承認する手順は次のとおりです。

  1. VM インスタンスに関連する Google Cloud プロジェクトでサービス アカウントを作成し、必要な権限と秘密鍵認証情報を設定します。Amazon EC2 VM インスタンスの場合、AWS アカウントの接続時に作成された AWS Link プロジェクトでこの操作を行います。

  2. VM インスタンスに秘密鍵認証情報をコピーします。これは、インスタンスで実行しているソフトウェアでアプリケーションのデフォルト認証情報として機能します。

  3. エージェントをインストールまたは再起動します。

サービス アカウントの作成

「認証」とは、クライアントの身元を判別するためのプロセスです。認証にはサービス アカウント(特定のユーザーではなく、Google Cloud プロジェクトに関連付けられた Google アカウント)を使用することをおすすめします。サービス アカウントは、コードが実行される場所(Compute Engine、App Engine、オンプレミス)に関係なく、認証に使用できます。詳細は、認証の概要をご覧ください。

サービス アカウントを作成するには、次の情報を使用してサービス アカウントの作成手順を完了します。

  • サービス アカウントを作成する Google Cloud プロジェクトを選択します。

    • Compute Engine インスタンスの場合は、インスタンスを作成したプロジェクトを選択します。ワークスペースのホスティング プロジェクトにインスタンスを作成した場合は、ワークスペースを選択します。

    • Amazon EC2 インスタンスの場合は、Logging を AWS アカウントに接続したときに作成された AWS コネクタ プロジェクトを選択します。コネクタ プロジェクトの名前は通常、AWS Link で始まります。ワークスペースのプロジェクトにはサービス アカウントを作成しないでください。

  • [役割] プルダウン メニューで次の役割を選択します。

    • [ロギング] > [ログ書き込み]。これにより、Logging エージェントがログを取り込むように認可されます。
    • [モニタリング] > [モニタリング指標の書き込み]。これにより、Logging エージェントが独自の健全性の指標を取り込むように認可されます。
  • キーを作成する際は、[キーのタイプ] として [JSON] を選択します。

簡単に処理できるように、変数 CREDS を作成してワークステーションの認証情報ファイルを指定することもできます。例:

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

残りの手順では、変数を参照します。

秘密鍵のインスタンスへのコピー

サービス アカウントを作成したら、VM インスタンス上の次のいずれかのロケーションに秘密鍵ファイルをコピーして、エージェントが認証情報を認識できるようにします。任意のファイルコピー ツールを使用できます。

  • 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 コマンドライン ツールを使用します。[YOUR-INSTANCE-NAME][YOUR-INSTANCE-ZONE] は、Google Cloud Console の [VM インスタンス] ページで確認できます。

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"

次のステップ

これで、エージェントが必要とする認証情報が VM インスタンスに保存されました。

  • まだエージェントをインストールしていない場合は、エージェントのインストール ページに移動して、エージェントをインストールしてください。手順については、エージェントのインストールをご覧ください。

  • エージェントがすでにインストールされている場合は、新しい認証情報を使用するためにエージェントを再起動します。手順については、エージェントを再起動するをご覧ください。

  • 認証情報を再度確認する場合は、秘密鍵認証情報を確認するをご覧ください。