OS Login を設定する


このドキュメントでは、OS Login と 2 要素認証プロセス(2FA)を使用した OS Login を設定する方法について説明します。

OS Login を使用すると、IAM 権限に基づいて仮想マシン(VM)インスタンスへのアクセスを制御できます。2 要素認証の有無にかかわらず OS Login を使用できますが、2 要素認証プロセスを使用するには OS Login が必要になります。OS Login と OS Login の 2 要素認証の詳細と、OS Login でサポートされている本人確認方法についての詳細は、OS Login についてをご覧ください。

始める前に

  • OS Login の 2 要素認証プロセスを使用する場合は、ドメインまたはアカウントで 2 要素認証プロセスを有効にします。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      詳細については Set up authentication for a local development environment をご覧ください。

制限事項

次の VM で OS Login はサポートされていません。
  • Windows Server と SQL Server VM
  • Fedora CoreOS VM。このイメージを使用して作成された VM へのインスタンス アクセスを管理するには、Fedora CoreOS Ignition システムを使用します。

OS Login の IAM ロールを割り当てる

OS Login が有効になっている VM に接続するユーザーに必要な IAM ロールをすべて割り当てます。

ロール 必要なユーザー 付与レベル
roles/compute.osLogin または roles/compute.osAdminLogin すべてのユーザー

プロジェクトまたはインスタンス

ユーザーが Google Cloud コンソールまたは Google Cloud CLI から SSH アクセスを必要とする場合は、これらのロールをプロジェクト レベルで付与するか、さらに compute.projects.get 権限を含むプロジェクト レベルでロールを付与する必要があります。

roles/iam.serviceAccountUser すべてのユーザー(VM にサービス アカウントがある場合) サービス アカウント
roles/compute.osLoginExternalUser 接続先の VM とは異なる組織のユーザー

組織

このロールは、組織管理者が付与する必要があります。

OS Login を有効にする

OS Login のメタデータを設定して、単一の VM またはプロジェクト内のすべての VM に対して、OS Login または 2 要素認証プロセスを使用した OS Login を有効にできます。

OS Login メタデータを設定すると、Compute Engine では VM の authorized_keys ファイルが削除され、プロジェクトまたはインスタンスのメタデータに保存されている SSH 認証鍵からの接続を受け入れなくなります。

プロジェクト内のすべての VM に対して OS Login を有効にする

プロジェクト内のすべての VM に対して OS Login を有効にするには、プロジェクト メタデータに次の値を設定します。

  1. OS Login を有効にします。
    • キー: enable-oslogin
    • 値: TRUE
  2. (省略可)2 要素認証プロセスを有効にします。
    • キー: enable-oslogin-2fa
    • 値: TRUE

単一の VM に対して OS Login を有効にする

単一の VM に対して OS Login を有効にするには、インスタンス メタデータに次の値を設定します。

  1. OS Login を有効にします。
    • キー: enable-oslogin
    • 値: TRUE
  2. (省略可)2 要素認証プロセスを有効にします。
    • キー: enable-oslogin-2fa
    • 値: TRUE

VM 作成時に OS Login を有効にする

Google Cloud コンソールまたは gcloud CLI を使用して、VM を作成するときに OS Login(必要に応じて 2 段階認証プロセス)を有効にします。

コンソール

公開イメージから VM を作成し、次の構成を指定して、起動時に OS Login と OS Login の 2 要素認証(省略可)を有効にする VM を作成します。

  1. [詳細オプション] セクションを開きます。
  2. [Security] セクションを開きます。
  3. [アクセスを管理] セクションを開きます。
  4. [IAM 権限で VM アクセスを制御する] を選択します。
  5. 省略可: OS Login の 2 要素認証プロセスを有効にする場合は、[2 段階認証プロセスが必要] を選択します。
  6. [作成] をクリックして VM を作成し、起動します。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 次のいずれかの gcloud compute instance create コマンドを実行して、起動時に OS Login と OS Login の 2 要素認証(省略可)を有効にする VM を作成します。

    • OS Login のみを有効にするには、次のコマンドを実行します。

      gcloud compute instances create VM_NAME \
       --image-family=IMAGE_FAMILY \
       --image-project=IMAGE_PROJECT \
       --metadata enable-oslogin=TRUE
      
    • OS Login の 2 要素認証プロセスを有効にするには、次のコマンドを実行します。

      gcloud compute instances create VM_NAME \
       --image-family=IMAGE_FAMILY \
       --image-project=IMAGE_PROJECT \
       --metadata enable-oslogin=TRUE,enable-oslogin-2fa=TRUE
      

    次のように置き換えます。

    • VM_NAME: 新しい VM の名前。
    • IMAGE_FAMILY: Linux OS のイメージ ファミリー。これにより、非推奨ではない最新の OS イメージから VM が作成されます。すべての公開イメージ ファミリーについては、オペレーティング システムの詳細をご覧ください。
    • IMAGE_PROJECT: イメージ ファミリーを含むイメージ プロジェクト。OS ごとに独自のイメージ プロジェクトがあります。すべての公開イメージ プロジェクトについては、オペレーティング システムの詳細をご覧ください。

Terraform

メタデータ値は、次のいずれかの方法でプロジェクトや VM に適用できます。

  • オプション 1: プロジェクト全体のメタデータに enable-oslogin を設定して、プロジェクト内のすべての VM に適用する。

    google_compute_project_metadata Terraform リソースを使用して、oslogin=TRUE にメタデータ値を設定します。

    resource "google_compute_project_metadata" "default" {
      metadata = {
        enable-oslogin = "TRUE"
      }
    }

    OS Login を無効にする場合は、enable-osloginFALSE に設定します。

  • オプション 2: 新規または既存の VM のメタデータに enable-oslogin を設定する。

    Terraform リソース google_compute_instance を使用して oslogin=TRUE を設定します。oslogin_instance_name は実際の VM 名に置き換えます。

    resource "google_compute_instance" "oslogin_instance" {
      name         = "oslogin-instance-name"
      machine_type = "f1-micro"
      zone         = "us-central1-c"
      metadata = {
        enable-oslogin : "TRUE"
      }
      boot_disk {
        initialize_params {
          image = "debian-cloud/debian-11"
        }
      }
      network_interface {
        # A default network is created for all GCP projects
        network = "default"
        access_config {
        }
      }
    }

    あるいは、enable-osloginFALSE に設定して VM が OS Login を使用できないようにすることもできます。

OS Login が有効になっている VM に接続する

Linux VM に接続するで説明されている方法で OS Login が有効になっている VM に接続します。

OS Login が有効になっている VM に接続すると、Compute Engine では組織管理者が構成したユーザー名が使用されます。組織管理者がユーザー名を構成していない場合、Compute Engine は USERNAME_DOMAIN_SUFFIX という形式でユーザー名を生成します。ユーザー名の詳細については、OS Login の仕組みをご覧ください。

OS Login の 2 要素認証が有効になっている VM に接続すると、選択した 2 段階認証プロセス方式または本人確認方法に基づくメッセージも表示されます。スマートフォン プロンプトの場合は、スマートフォンまたはタブレットに表示されたプロンプトに同意して続行します。他の方法の場合は、セキュリティ コードまたはワンタイム パスワードを入力します。

OS Login の問題の解決方法

OS Login のエラーを診断して解決する方法については、OS Login のトラブルシューティングをご覧ください。

次のステップ