組織での OS Login の管理

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

OS Login を使用してインスタンスへのアクセスを管理する場合は、Cloud Identity アカウントに対して組織レベルで構成を設定できます。たとえば、OS Login API を直接使用できるユーザーを管理したり、組織内のすべての仮想マシン(VM)インスタンスに対して OS ログインを有効にしたり、外部ユーザーにアクセスを許可したりできます。

このトピックでは、次のタスクについて説明します。

始める前に

OS Login の組織のポリシー

組織で OS Login の制約を設定して、新しいすべてのプロジェクトとそれらの新しいプロジェクトで作成した VM インスタンスに対して OS Login を有効にすることが可能です。

この制約を設定すると、次の条件が適用されます。

  • enable-oslogin=true は、すべての新しいプロジェクトのプロジェクト メタデータに含まれています。
  • VM とプロジェクトが新規の場合でも既存の場合でも、インスタンスまたはプロジェクトのメタデータで enable-osloginfalse に設定するリクエストは拒否されます。

制限事項

OS Login は、次のプロダクト、機能、VM ではサポートされていません。
  • Cloud Data Fusion バージョン 6.1.4 以前
  • オーケストレートする
  • 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、GK を使用する組織で OS Login を使用するには、組織レベルで OS Login の制約を有効にしてから、影響を受けるプロジェクトのプロジェクトまたはフォルダの制約を個別に無効にできます。

組織のポリシーの編集の詳細については、ポリシーの作成と編集をご覧ください。

組織のポリシーを有効にする

OS Login のポリシーを有効にするには、Google Cloud CLI を使用して、特定のプロジェクトやフォルダに対して OS Login の制約を設定します。Google Cloud Console または Google Cloud CLI を使用して、組織全体に OS Login の制約を設定することもできます。

Console

Console から OS Login の組織のポリシーを設定する手順は次のとおりです。

  1. Google Cloud Console で、[組織のポリシー] ページに移動します。

    [組織のポリシー] ページに移動

  2. ポリシーリストで、[OS Login が必須] をクリックして、OS Login の制約を表示します。
  3. [編集] をクリックして、既存の OS Login の制約を編集します。
  4. [編集] ページで、[カスタマイズ] を選択します。
  5. この制約の適用を有効にするには、[オン] を選択します。
  6. [保存] をクリックして制約の設定を適用します。

gcloud

OS Login の組織のポリシーを設定するには、gcloud beta resource-manager org-policies enable-enforce コマンドを使用します。

  1. 自分の組織 ID を確認します。

    gcloud organizations list
  2. 組織で制約を設定します。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 のロールと連携できます。 IAM ロール roles/compute.osLoginExternalUser は VM へのアクセスを許可しません。

roles/compute.osLoginExternalUser と必要なその他の OS ログイン インスタンス アクセスの役割を組織外のユーザーに付与するには、次の手順を実行します。

  1. Google Cloud Console で、プロジェクトと組織の選択ページに移動します。

    プロジェクトと組織の選択ページに移動

  2. [組織] プルダウン メニューで組織を選択します。
    1. すべての組織を表示するには、[すべて] をクリックします。
    2. 組織の名前をクリックします。
  3. [追加] をクリックして、ユーザーに新しいロールを追加します。
  4. インスタンス アクセスを構成するユーザーのユーザー名を指定します。
  5. [ロールを選択] をクリックして、ユーザーに付与するロールを指定します。
  6. Compute Engine のロールリストで、[Compute OS Login の外部ユーザー] ロールを選択します。
  7. [追加] をクリックして、選択したロールをユーザーに付与します。
  8. まだ行っていない場合は、プロジェクトまたは組織レベルで他の 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 プロパティを変更する場合は、リクエストで現在の、または新しい usernameuidgid の値を指定する必要があります。

ユーザーの 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。このプロパティには 100160000 または 655352147483647 の範囲の値を指定する必要があります。Container-Optimized OS にアクセスする場合は、UID には 65536214748646 の範囲の値を設定する必要があります。UID は組織内で一意でなければなりません。
  • GID: ユーザーが属する VM のグループ ID。
  • USER_HOME_PATH: (省略可)ユーザー用の VM のホーム ディレクトリ。例: /home/example_username
  • SHELL_PATH: (省略可)ユーザーがインスタンスに接続した後のデフォルトのシェルのパス。たとえば、/bin/bash/bin/sh です。
  • KEY_VALUE: 公開 SSH 認証鍵の値
  • EXPIRATION_TIME: エポックを起点とする鍵の有効期間(マイクロ秒単位。1 秒 = 106 マイクロ秒)。

アカウントのプロパティを削除する

ユーザーの posixAccountssshPublicKeys データを消去するには、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 Console の割り当てページから追加の割り当てをリクエストできます。

[割り当て] に移動

次のステップ