このドキュメントでは、OS Login を使用して組織全体の VM インスタンスへのアクセスを管理する方法について説明します。
このトピックでは、次のタスクについて説明します。
- 組織のポリシーを使用して組織の OS Login を有効にする: 組織のポリシーを使用して、組織内のすべての新しい VM インスタンスに対して OS Login が有効になっていることを確認します。
- 組織外のユーザーにインスタンスへのアクセスを許可する: 組織外のユーザー アカウントが SSH を使用してインスタンスに接続することを許可します。
- OS Login API を管理する: ユーザーに対し、OS Login API にアクセスして使用することを許可または禁止します。また、OS Login API の機能を有効または無効にします。
- OS Login イベントを監査する: SSH 認証鍵の追加、削除、更新、POSIX 情報の削除など、OS Login 関連のイベントやアクティビティを追跡します。
- Directory API を使用してユーザー アカウントに変更を加える: Directory API を使用して、ユーザー名や POSIX アカウント情報などのユーザー プロパティを更新します。
- OS Login で Linux グループを使用する: OS Login で Linux グループを使用して VM 内のユーザー権限を管理します。
- OS Login と Workforce Identity 連携を使用する(プレビュー): 組織で外部 ID プロバイダ(IdP)を使用している場合は、OS Login が有効になっている VM に接続します。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
OS Login の組織のポリシー
組織で OS Login の制約を設定して、新しいすべてのプロジェクトとそれらの新しいプロジェクトで作成した VM インスタンスに対して OS Login を有効にすることが可能です。
この制約を設定すると、次の条件が適用されます。
enable-oslogin=true
は、すべての新しいプロジェクトのプロジェクト メタデータに含まれています。- VM とプロジェクトが新規の場合でも既存の場合でも、インスタンスまたはプロジェクトのメタデータで
enable-oslogin
をfalse
に設定するリクエストは拒否されます。
制限事項
OS Login は、次のプロダクト、機能、VM ではサポートされていません。- Cloud Data Fusion バージョン 6.1.4 以前
- Cloud Composer 1
- 1.23.5 より前のバージョンを実行する Google Kubernetes Engine(GKE)の一般公開クラスタ
- 1.20.5 より前のバージョンのノードプールを実行する GKE の限定公開クラスタ
- Dataproc Serverless
- Windows Server と SQL Server VM
- Fedora CoreOS VM。このイメージを使用して作成された VM へのインスタンス アクセスを管理するには、Fedora CoreOS Ignition システムを使用します。
Cloud Data Fusion、Cloud Composer、GKE の回避策
Cloud Data Fusion、Cloud Composer、GKE を使用する組織で OS Login を使用するには、組織レベルで OS Login の制約を有効にしてから、影響を受けるプロジェクトのプロジェクトまたはフォルダの制約を個別に無効にできます。
組織のポリシーの編集の詳細については、ポリシーの作成と編集をご覧ください。
組織のポリシーを有効にする
OS Login のポリシーを有効にするには、Google Cloud CLI を使用して、特定のプロジェクトやフォルダに対して OS Login の制約を設定します。Google Cloud コンソールまたは Google Cloud CLI を使用して、組織全体に OS Login の制約を設定することもできます。
コンソール
Console から OS Login の組織のポリシーを設定する手順は次のとおりです。
- Google Cloud Console で、[組織のポリシー] ページに移動します。
- ポリシーリストで、[OS Login が必須] をクリックして、OS Login の制約を表示します。
- [編集] をクリックして、既存の OS Login の制約を編集します。
- [編集] ページで、[カスタマイズ] を選択します。
- この制約の適用を有効にするには、[オン] を選択します。
- [保存] をクリックして制約の設定を適用します。
gcloud
OS Login の組織のポリシーを設定するには、gcloud beta resource-manager org-policies enable-enforce
コマンドを使用します。
自分の組織 ID を確認します。
gcloud organizations list
組織で制約を設定します。
organization-id
を組織 ID に置き換えます。gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --organization=organization-id
さらに、--folder
フラグまたは --project
フラグ、フォルダ ID またはプロジェクト ID をそれぞれ使用すると、フォルダやプロジェクトに対して組織のポリシーを適用できます。
フォルダの場合は、次のコマンドを実行します。
gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --folder=folder-id
プロジェクトの場合は、次のコマンドを実行します。
gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --project=project-id
次のように置き換えます。
組織外のユーザーにインスタンスへのアクセスを許可する
デフォルトでは、組織外のユーザーは組織内のインスタンスに SSH 認証鍵を設定したり、組織内のインスタンスにアクセスしたりできません。場合によっては、別の組織のユーザーやコンシューマ向け Google gmail.com
アカウントを持つユーザーにインスタンスへのアクセスを許可しなければならないことがあります。
IAM ロールの roles/compute.osLoginExternalUser
があると、外部 Google アカウントは POSIX アカウント情報を構成できるようになり、他の OS Login のロールと連携できます。
OS Login インスタンスにアクセスするために必要な roles/compute.osLoginExternalUser
とその他のロールを組織外のユーザーに付与するには、次の手順を実施します。
- Google Cloud コンソールで、プロジェクトと組織の選択ページに移動します。
- [組織] プルダウン メニューで組織を選択します。
- すべての組織を表示するには、[すべて] をクリックします。
- 組織の名前をクリックします。
- [追加] をクリックして、ユーザーに新しいロールを追加します。
- インスタンス アクセスを構成するユーザーのユーザー名を指定します。
- [ロールを選択] をクリックして、ユーザーに付与するロールを指定します。
- Compute Engine のロールリストで、[Compute OS Login の外部ユーザー] ロールを選択します。
- [追加] をクリックして、選択したロールをユーザーに付与します。
- まだ行っていない場合は、プロジェクトまたは組織レベルで他の OS Login インスタンス アクセスのロールをユーザーに付与します。
これで、指定したユーザーが、プロジェクト内の OS Login が有効になっているインスタンスに接続できます。
OS Login API を管理する
組織レベルでは、Google Workspace 管理コントロールを設定することで、OS Login API へのアクセスを制限できます。Google Workspace の管理コントロールを構成したり、構成オプションを表示したりするには、組織で Google Cloud を使用できるユーザーを管理するをご覧ください。Google Workspace 管理者は、OS Login API の特定の機能を有効または無効にできます。次のようなオプションがあります。
- OS Login API によって生成されるユーザー名にドメイン サフィックスを含めるかどうかを選択できます。ドメイン サフィックスを含める設定がオンにされていない場合、たとえばドメイン
example.com
内のユーザーuser@example.com
にはuser
というユーザー名が生成されます。 - 組織のメンバーが OS Login API を使用して SSH 認証鍵を管理できるかどうかを指定できます。
- 組織外のユーザーに対して VM へのアクセスを制限または許可できます。
OS Login API の設定をオンまたはオフにする方法については、Google Cloud Platform の設定を選択するをご覧ください。
OS Login イベントを監査する
Google ワークスペース管理者は、Google Workspace Admin SDK を使用して、OS Login API で実行される操作を監査できます。これらのイベントを確認すると、ユーザーが SSH 認証鍵の追加、削除、更新、POSIX アカウント情報の削除をいつ行ったかを追跡できます。
Google Workspace Admin SDK から OS Login API の監査アクティビティ イベントを取得するには、applicationName=gcp
を指定して Activities.list()
を呼び出します。詳細については、Google Workspace Admin SDK Reports API ドキュメントの Google Cloud アクティビティ イベントをご覧ください。
Directory API を使用してユーザー アカウントに変更を行う
OS Login では、インスタンスへの接続時に Cloud Identity または Google Workspace のユーザー設定を使用します。組織管理者は、Google Workspace または Cloud Identity のユーザー アカウントに対し、Directory API を使用して次のタスクを行うことができます。
- インスタンスのログイン設定を変更する。
- ユーザーを管理者にする
- アカウント名やメールアドレスなどのユーザー プロパティを変更する
- ユーザーの SSH 認証鍵の追加と削除を行う
- POSIX アカウント情報を変更する
- ユーザーがインスタンスに接続するユーザー名を変更する。
次の例では、Directory API を使用してユーザー アカウントを変更または削除します。編集できるアカウント プロパティの詳細については、Directory API リファレンスをご覧ください。
アカウントのプロパティを変更する
ユーザーの POSIX アカウント情報を変更するか、ユーザーの SSH 認証鍵を管理するには、directory.users.update
メソッドに PUT
リクエストを発行し、変更するユーザー アカウントの 1 つ以上のプロパティを指定します。
ユーザーの posixAccounts
プロパティを変更する場合は、リクエストで現在の、または新しい username
、uid
、gid
の値を指定する必要があります。
ユーザーの sshPublicKeys
プロパティを変更する場合は、リクエストで key
値を指定する必要があります。
PUT
リクエストの例を次に示します。
PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY { "posixAccounts": [ { "username": "USERNAME", "uid": "UID", "gid": "GID", "homeDirectory": "USER_HOME_PATH", "shell": "SHELL_PATH" } ], "sshPublicKeys": [ { "key": "KEY_VALUE", "expirationTimeUsec": EXPIRATION_TIME } ], }
次のように置き換えます。
USER_KEY
: ユーザーのメインのメールアドレス、エイリアス メールアドレス、または一意のユーザー ID。USERNAME
: Compute Engine がそのユーザーのために VM に追加するユーザー名。この値は、組織内で一意でなければならず、チルダ(「~」)で終わったり、ピリオド(「.」)を含めてはなりません。UID
: この VM における、このユーザーのユーザー ID。このプロパティには1001
~60000
または65535
~2147483647
の範囲の値を指定する必要があります。Container-Optimized OS にアクセスする場合は、UID
には65536
~214748646
の範囲の値を設定する必要があります。UID
は組織内で一意でなければなりません。GID
: ユーザーが属する VM のグループ ID。USER_HOME_PATH
: (省略可)ユーザー用の VM のホーム ディレクトリ。たとえば、/home/example_username
です。SHELL_PATH
: (省略可)このユーザーがインスタンスに接続した後のデフォルトのシェルのパス。たとえば、/bin/bash
や/bin/sh
です。KEY_VALUE
: 公開 SSH 認証鍵の値。EXPIRATION_TIME
: エポックを起点とする鍵の有効期間(マイクロ秒単位。1 秒 = 106 マイクロ秒)。
アカウントのプロパティを削除する
ユーザーの posixAccounts
と sshPublicKeys
データを消去するには、directory.users.update
メソッドに PUT
リクエストを発行して、posixAccounts
フィールドと sshPublicKeys
フィールドを null
に設定します。
PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY { "posixAccounts": null, "sshPublicKeys": null }
USER_KEY
は、ユーザーのメインのメールアドレス、エイリアス メールアドレス、または一意のユーザー ID に置き換えます。
OS Login で Linux グループを使用する
組織管理者は、POSIX グループを作成して管理することで、Cloud Identity Groups API を使用して OS Login ユーザー用に追加の Linux グループを構成できます。OS Login は、POSIX グループを組織の VM 内の追加の Linux グループにリンクして、VM に対するユーザーの権限を管理できるようにします。
Linux グループでユーザー メンバーシップを管理する
POSIX グループを作成する方法については、POSIX グループの作成と更新をご覧ください。
ユーザーをグループに追加する方法については、ユーザーをグループに追加または招待するをご覧ください。
メンバーシップの更新は 10 分以内に反映されます。グループの変更は、新しく作成されたすべての VM に反映されます。POSIX グループの更新が実行中のすべての VM に反映されるまでに、最大で 6 時間ほどかかることがあります。場合によっては、ユーザーをログアウトするか、newgrp
コマンドを使用してグループの変更を監視する必要があります。
OS Login の Linux グループのレート制限
OS Login の Linux グループは、oslogin.googleapis.com/metadata_server_groups_requests
割り当てを使用します。デフォルトでは割り当て上限は、特定のリージョンのプロジェクトごとに 60 リクエスト/分です。
レート制限を引き上げる必要がある場合は、Google Cloud コンソールの割り当てページから追加の割り当てをリクエストできます。
Workforce Identity 連携と OS Login を使用する
Workforce Identity 連携を使用している組織は、OS Login を使って VM へのアクセスを管理できます。組織で Workforce Identity 連携が有効になっている場合、OS Login では鍵ベースの認証ではなく証明書ベースの認証を使用して、ユーザー ID を検証します。
始める前に
- Workforce Identity プールを作成します。
google.posix_username
属性のマッピングを設定します。次の手順で、OS Login と Workforce Identity 連携を使用するように VM を構成します。
VM で次のコマンドを実行して、VM に OpenSSH 7.4 以降がインストールされていることを確認します。
ssh -V
制限事項
Workforce Identity 連携と OS Login を使用するには、接続先の VM に OpenSSH バージョン 7.4 以降が必要です。
。Workforce Identity 連携を使用している組織のユーザーは、VM のシリアルポートにアクセスできません。
OS Login と Workforce Identity 連携を使用する VM に接続する
Google Cloud コンソール、gcloud CLI、またはその他の SSH クライアントを使用して、OS Login と Workforce Identity 連携を使用する VM に接続します。
コンソール
OS Login と Workforce Identity 連携を使用する VM にブラウザでの SSH で接続する場合、接続の試行時に Compute Engine によって SSH 証明書が構成されます。
VM に接続するには、次の操作を行います。
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
gcloud
OS Login と Workforce Identity 連携を使用する VM に gcloud CLI で接続する場合、接続の試行時に Compute Engine によって SSH 証明書が構成されます。
gcloud beta compute ssh
コマンドを実行して、SSH を使用して VM に接続します。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
次のコマンドを実行します。
gcloud beta compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME
次のように置き換えます。
PROJECT_ID
: VM が含まれているプロジェクトの IDZONE
: VM が配置されているゾーンの名前VM_NAME
: VM の名前
Google Cloud CLI のデフォルト プロパティを設定している場合、このコマンドの
--project
フラグと--zone
フラグは省略できます。次に例を示します。gcloud compute ssh VM_NAME
IAP Desktop
OS Login と Workforce Identity 連携を使用する VM に IAP Desktop で接続する場合、接続の試行時に Compute Engine によって SSH 証明書が構成されます。
IAP Desktop を使用して VM に接続するには、次の操作を行います。
-
まだインストールしていない場合は、ワークステーションに IAP Desktop をインストールします。
-
IAP Desktop を開きます。[Add projects] ウィンドウが開きます。
-
メッセージが表示されたら、Workforce Identity 連携でログインします。
-
[Add projects] ウィンドウで、接続する VM が含まれているプロジェクトのプロジェクト ID または名前を入力します。
-
[Project Explorer] ウィンドウで、VM の名前を再度右クリックし、[Connect] を選択して VM に接続します。
SSH クライアント
OS Login と Workforce Identity 連携を使用する VM に SSH クライアントで接続するには、次の操作を行います。
- SSH 認証鍵を作成します(まだ作成していない場合)。
users.projects.locations.signSshPublicKey
メソッドを使用して公開 SSH 認証鍵に署名します。POST https://oslogin.googleapis.com/v1beta/users/USER/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey { "ssh_public_key": "PUBLIC_KEY" }
次のように置き換えます。
USER
: Workforce プール内の単一の ID。次の形式で指定します。principal:%2F%2Fiam.googleapis.com%2Flocations%2Fglobal%2FworkforcePools%2POOL_ID%2Fsubject%2FSUBJECT_ATTRIBUTE_VALUE
次のように置き換えます。
POOL_ID
: ユーザーが所属する Workforce プール。SUBJECT_ATTRIBUTE_VALUE
: ユーザーのgoogle.posix_username
属性マッピングの値。
PROJECT_ID
: 接続する VM を含むプロジェクトのプロジェクト ID。LOCATION
: 接続する VM が配置されているゾーン。PUBLIC_KEY
: SSH 公開鍵ファイルの内容。
user.signSshPublicKey
メソッドの出力から SSH 証明書をコピーし、その内容を新しいファイルに保存します。次のコマンドを実行して、SSH 証明書ファイルに権限を設定します。
sudo chmod 600 FILE_NAME
FILE_NAME
は、ファイル名に置き換えます。次のコマンドを使用して VM に接続します。
ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
次のように置き換えます。
PATH_TO_PRIVATE_KEY
: 秘密 SSH 認証鍵ファイルのパス。PATH_TO_SSH_CERTIFICATE
: SSH 証明書ファイルのパス。USERNAME
: ユーザーのgoogle.posix_username
属性マッピングの値。EXTERNAL_IP
: VM の外部 IP アドレス。
次のステップ
- OS Login を設定する方法を学習する。
- 2 段階認証プロセスを使用して OS Login を設定する方法を学習する。
- OS Login 機能の概要を読む。
- OS Login のトラブルシューティングを行う。