組織での OS Login の管理

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

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

始める前に

組織のポリシーを使用して OS Login を有効にする

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

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

  • 新しいすべてのプロジェクトに対してプロジェクトのメタデータで enable-oslogintrue に設定される。
  • インスタンスまたはプロジェクトのメタデータで enable-osloginfalse に設定する更新リクエストは拒否される。

制限事項

  • 過去にさかのぼって制約を適用することはできません。制約が適用される前に作成されたインスタンスやプロジェクトに対して、OS Login が自動的に有効になることはありません。
  • Google Kubernetes Engine で実行中のインスタンスでは OS Login がサポートされません。 OS Login の制約を有効にすると、制約が適用されるプロジェクトで Kubernetes Engine クラスタから新しいインスタンスを作成できなくなります。

    この問題を回避するには、組織レベルでこの制約を有効にしてから、Google Kubernetes Engine クラスタを使用するプロジェクトで制約を選択的に無効にします。または、プロジェクト レベルまたはフォルダレベルで OS Login を有効にすることもできます。組織ポリシーの管理について詳しくは、組織ポリシーの作成と管理をご覧ください。

OS Login のポリシーを有効にするには、gcloud コマンドライン ツールを使用して、特定のプロジェクトやフォルダに対して OS Login の制約を設定します。Google Cloud Console または gcloud コマンドライン ツールを使用して、組織全体に 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 のロールと連携できます。

OS Login インスタンスにアクセスするために必要な roles/compute.osLoginExternalUser とその他のロールを組織外のユーザーに付与するには、次の手順に従います。

  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.users.update メソッドに対する PUT リクエストを作成し、ユーザー アカウントのどのプロパティを変更するかを指定します。

PUT https://compute.googleapis.com/admin/directory/v1/users/user-id-key

{
 "posixAccounts": [
   {
    "username": "user-name",
    "uid": "uid",
    "gid": "gid",
    "homeDirectory": "user-home-path",
    "shell": "shell-path"
   }
  ],
}

以下を置き換えます。

  • user-id-key: ユーザーの不変の ID。
  • user-name: Compute Engine がそのユーザーのためにインスタンスに追加するユーザー名。この値は、組織内で一意であることが必要です。この user-name で末尾にチルダ(「~」)を使用したり、ピリオド(「.」)を含めたりすることはできません。そうすると、VM に対して sudo コマンドを実行するときに問題が発生します。
  • uid: このインスタンスにおける、このユーザーのユーザー ID。このプロパティには 100160000 または 655352147483647 の範囲の値を指定する必要があります。Container-Optimized OS にアクセスする場合は、UID には 65536214748646 の範囲の値を設定する必要があります。UID は組織内で一意でなければなりません。
  • gid: このインスタンスにおいて、このユーザーが属するグループ ID。
  • user-home-path: このインスタンスにおける、このユーザーのホーム ディレクトリ。例: /home/example_username
  • shell-path: このユーザーがインスタンスに接続した後のデフォルトのシェルのパス。たとえば、/bin/bash/bin/sh です。

次のステップ