このドキュメントでは、サービス アカウントを使用し、SSH で Compute Engine 仮想マシン(VM)インスタンスに接続する方法について説明します。サービス アカウントに SSH を設定すると、SSH を使用するようにアプリを構成できます。これにより、ワークロードを自動化できます。
始める前に
- サービス アカウントを作成します。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
サービス アカウントとして VM に手動で接続する
サービス アカウントとして VM に接続するには、次のいずれかの方法を使用します。
このタスクに必要な権限
このタスクを行うには、次の権限が必要です。
- サービス アカウントのサービス アカウント トークン作成者ロール(
roles/iam.serviceAccountTokenCreator
)に含まれるすべての権限。単一のサービス アカウントにこのロールを付与する方法については、サービス アカウントに対するアクセス権の管理をご覧ください。 - OS Login を使用する場合は、サービス アカウントに対する OS Login の IAM ロールのいずれかに含まれているすべての権限が必要です。
- OS Login を使用しない場合、サービス アカウントには
compute.projects.setCommonInstanceMetadata
権限も必要になります。
gcloud CLI の --impersonate-service-account
フラグを使用し、サービス アカウントの ID を使用して VM に直接接続します。次のコマンドを実行して、サービス アカウントとして VM に接続します。
gcloud compute sshVM_NAME \ --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
次のように置き換えます。
VM_NAME
: サービス アカウントとして接続する対象 VM の名前。SERVICE_ACCOUNT_EMAIL
: サービス アカウントに関連付けられたメールアドレス。
このタスクに必要な権限
このタスクを行うには、次の権限が必要です。
- サービス アカウントとユーザー アカウントに対するサービス アカウント ユーザー ロール(
roles/iam.serviceAccountUser
)に含まれているすべての権限。単一のサービス アカウントにこのロールを付与する方法については、サービス アカウントに対するアクセス権の管理をご覧ください。 - OS Login を使用する場合は、サービス アカウントとユーザー アカウントに対する OS Login の IAM ロールのいずれかを含むすべての権限が必要です。
- OS Login を使用しない場合は、サービス アカウントとユーザー アカウントに対する
compute.projects.setCommonInstanceMetadata
権限も必要です。
さらに、サービス アカウントを VM に割り当て、VM に cloud-platform
アクセス スコープを設定する必要があります。
次の手順で、別の VM からサービス アカウント権限を借用します。
- サービス アカウントとして実行されている VM に接続します。
サービス アカウントとして実行されている VM から、同じ方法を使用して他の VM に接続します。
次のステップ
- SSH を使用するようにアプリを構成する方法を確認する。
- SSH 認証鍵の構成やストレージなど、Compute Engine での SSH 接続の動作の詳細を確認する。