OS ログインと 2 要素認証の設定

OS ログインを使用してインスタンスへのアクセスを管理する場合は、2 要素認証(2FA とも呼ばれます)を使用してセキュリティをさらに強化できます。

OS ログインは、次の 2FA 方式または本人確認方法をサポートしています。

インスタンスで 2FA 認証を使用するには、以下の手順に従います。

  1. Google アカウントまたはドメインで 2FA を有効にする
  2. プロジェクトまたはインスタンスで 2FA を有効にする
  3. インスタンスに接続する

OS ログインの 2FA を設定した後、監査ログを使用して認証セッションをモニタリングできます。

サポートされているオペレーティング システム

OS ログインの 2 要素認証では、以下の日付より後に作成されたオペレーティング システム イメージが必要です。

オペレーティング システム 日付
CentOS 6、7 2019 年 3 月 26 日
Debian 9 2019 年 3 月 26 日
RHEL 6 または 7 2019 年 3 月 26 日
SUSE 12 または 15 現時点ではサポートされていません
Ubuntu 14.04 LTS、16.04 LTS、18.04 LTS、18.10 現時点ではサポートされていません

Google アカウントまたはドメインで 2FA を有効にする

プロジェクトまたはインスタンスに対して 2 要素認証を有効にする前に、Google アカウントまたはドメインで 2FA を有効にする必要があります。プロジェクトまたはインスタンスを含むドメイン、あるいはプロジェクトまたはインスタンスを所有するユーザーに対して 2FA を必ず有効にしてください。

G Suite 管理者がドメインに対して、あるいは個々の Google ユーザーがユーザー アカウント レベルで 2 要素認証を有効にできます。

ドメイン

ドメインに対する 2 要素認証は、G Suite 管理者が有効にする必要があります。

ドメインで 2FA を有効にするには、G Suite 管理者ガイドの 2 段階認証プロセスでビジネスを保護するをご覧ください。

ユーザー アカウント

ユーザー アカウントが G Suite 管理者によって管理されていない場合は、個々の Google アカウントに対して 2FA を構成できます。

個々の Google アカウントに対して 2FA を構成するには、Google 2 段階認証プロセスをご覧ください。

プロジェクトまたはインスタンスで 2FA を有効にする

ドメインまたはユーザー アカウント レベルで 2 要素認証を有効にした後は、個々のインスタンスまたはプロジェクトで OS ログインの 2FA の使用を有効にできます。

OS ログインの 2FA を使用するには、インスタンスまたはプロジェクトで OS ログインが有効になっている必要があります。

インスタンス作成時またはプロジェクト設定時に、OS ログインと OS ログインの 2FA の両方を構成できます。OS ログインがすでに有効になっている既存のインスタンスまたはプロジェクトにも OS ログインの 2FA を構成できます。

OS ログインの 2 要素認証を使用するようにプロジェクトまたはインスタンスを構成するには、プロジェクトまたはインスタンスのメタデータで enable-oslogin-2fa=TRUE を設定します。

Console

インスタンスを作成するときにインスタンス メタデータの中で enable-oslogin-2fa を設定するには:

  1. GCP Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。
  3. [新しいインスタンスの作成] ページで、インスタンスに必要なプロパティを入力します。
  4. [メタデータ] セクションで、次のメタデータ エントリを追加します。

    • enable-oslogin。値は TRUE に設定します。
    • enable-oslogin-2fa。値は TRUE に設定します。
  5. [作成] をクリックしてインスタンスを作成します。

プロジェクト全体のメタデータの中で enable-oslogin-2fa を設定し、プロジェクト内のすべてのインスタンスに適用するには:

  1. [メタデータ] ページに移動します。

    [メタデータ] ページに移動

  2. [編集] をクリックします。
  3. キーが enable-oslogin-2fa で値が TRUE のメタデータ エントリを追加します。この機能を無効にする場合は値を FALSE に設定します。
  4. [保存] をクリックして変更を適用します。

CoreOS を実行していない VM の場合、この変更は即座に適用されます。インスタンスの再起動は不要です。CoreOS ディストリビューションの場合は、変更を有効にするためにインスタンスを再起動します。再起動するには、インスタンスを停止してから起動します。

既存インスタンスのメタデータの中で enable-oslogin-2fa を設定するには:

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. メタデータ値を設定するインスタンスの名前をクリックします。
  3. インスタンスの詳細ページの上部にある [編集] をクリックしてインスタンス設定の編集画面を開きます。
  4. [カスタム メタデータ] でメタデータ エントリを追加し、キーを enable-oslogin-2fa、値を TRUE に設定します。このインスタンスで OS ログイン機能を無効にする場合は、値を FALSE に設定します。enable-osloginTrue に設定されていることも確認する必要があります。
  5. インスタンスの詳細ページの一番下にある [保存] をクリックして、変更内容をインスタンスに適用します。

CoreOS 以外のオペレーティングシステムの場合、この変更は即座に適用されます。インスタンスの再起動は不要です。CoreOS ディストリビューションの場合は、変更を有効にするためにインスタンスを再起動します。再起動するには、インスタンスを停止してから起動します。

gcloud

インスタンスを作成するときにインスタンス メタデータの中で enable-oslogin-2fa を設定するには、次のコマンドを実行します。

gcloud compute instances create [INSTANCE_NAME] \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True

プロジェクト全体のメタデータの中で enable-oslogin-2fa を設定し、プロジェクト内のすべてのインスタンスに適用するには、次のコマンドを実行します。

gcloud compute project-info add-metadata \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True

既存インスタンスのメタデータの中で enable-oslogin-2fa を設定するには、次のコマンドを実行します。

gcloud compute instances add-metadata \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True [INSTANCE_NAME]

[INSTANCE_NAME] はインスタンスの名前です。

インスタンスへの接続

必要な役割を構成したら、Compute Engine のツールを使用してインスタンスに接続します。Compute Engine によって自動的に SSH 認証鍵が生成されてユーザー アカウントに関連付けられます。別の方法として、SSH 認証鍵を手動で作成してその公開鍵をユーザー アカウントに追加し、サードパーティ製ツールを使用してインスタンスに接続することもできます。インスタンスがユーザー アカウントから公開鍵を取得した後、そのインスタンスには、正しいユーザー名と対応する秘密 SSH 認証鍵で接続できるようになります。

インスタンスに接続すると、選択した 2FA 方式または本人確認方法に基づいてメッセージが表示されます。

  • Google 認証システムの場合は、次のメッセージが表示されます。

    "Enter your one-time password:"

  • テキスト メッセージまたは音声通話による確認の場合は、次のメッセージが表示されます。

    "A security code has been sent to your phone. Enter code to continue:"

  • スマートフォン プロンプトの場合は、次のメッセージが表示されます。

    A login prompt has been sent to your enrolled device:"

    スマートフォン プロンプトの場合は、スマートフォンまたはタブレットに表示されたプロンプトに同意して続行します。他の方法の場合は、セキュリティ コードまたはワンタイム パスワードを入力します。

インスタンスに接続したら、予想されるログイン動作を確認します。

OS ログインの 2FA 監査ログの表示

Compute Engine は、2 要素認証のリクエストを追跡するための監査ログを提供します。2 要素認証には 2 つのリクエスト タイプがあります。

  • StartSession - 新しい認証セッションを開始します。StartSession 呼び出しでは、クライアントはその機能をサーバーに宣言し、最初の本人確認に関する情報を取得します。StartSession 呼び出しは以下を返します。

    • セッション ID - このセッション ID は、後続のすべての ContinueSession 呼び出しに渡されます。
    • この新しい認証セッションで使用された本人確認方法または 2FA 方式に関する情報。
  • ContinueSession - 既存の認証セッションを続行します。ContinueSession API は、与えられたセッション ID を使用して、次の 2 つのアクションのいずれかを実行できます。

    • 本人確認または方式に対するレスポンスを受け入れてから、認証または拒否する。あるいは、ユーザーからの追加の本人確認をリクエストする。
    • 前回の API 呼び出しでサーバーから最初に提案されたものとは異なる本人確認方法に切り替える。クライアントが別の本人確認方法を完了することを選択した場合(スマートフォン プロンプトの代わりに Google 認証システムを使用する、など)、クライアントは希望する種類の request.challengeId を使用してサーバーへの呼び出しで別の本人確認方法をリクエストできます。

ログを表示するには、ログビューアの権限を持っているか、プロジェクトの閲覧者または編集者である必要があります。

  1. GCP Console の [ログ] ページに移動します。

    [ログ] ページに移動

  2. プルダウン メニューを展開して [Audited Resource] を選択します。
  3. 検索バーで、「oslogin.googleapis.com」と入力して、Enter キーを押します。
  4. 2 要素認証リクエストを示す監査ログのリストが表示されます。任意のエントリを展開すると、次のような詳細情報が表示されます。

    2 要素認証の監査ログのスクリーンショット

監査ログでは、次の操作ができます。

  1. protoPayload プロパティを展開します。

    2 要素認証の監査ログ指標のスクリーンショット

  2. methodName を探し、このログが適用されるアクティビティ(StartSession リクエストまたは ContinueSession リクエスト)を確認します。たとえば、このログで StartSession リクエストが追跡される場合、メソッド名は "google.cloud.oslogin.OsLoginService.v1.StartSession" となります。同様に、ContinueSession ログでは "google.cloud.oslogin.OsLoginService.v1.ContinueSession" となります。監査ログエントリは、セッションの開始リクエストと続行リクエストのすべてについて記録されます。

ログタイプに応じてさまざまな監査ログプロパティがあります。たとえば、StartSession に関連する監査ログにはセッションの開始に固有のプロパティがあり、ContinueSession の監査ログには独自のプロパティ セットがあります。また、監査ログの一部のプロパティは、この 2 つのログタイプ間で共有されます。

すべての 2 要素認証監査ログ

プロパティ
serviceName oslogin.googleapis.com
resourceName プロジェクト番号を含む文字列。このプロジェクト番号は、監査ログがどのログイン リクエストに属しているかを示します。たとえば、projects/myproject12345 です。
severity ログメッセージの重大度。たとえば、INFOWARNING です。
request.email API 呼び出しが認証しているユーザーのメールアドレス。
request.numericProjectId Google Cloud Platform プロジェクトのプロジェクト番号。
response.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.StartOrContinueSessionResponse
response.sessionId セッションを一意に識別する ID 文字列。このセッション ID は、シーケンス内の次の API 呼び出しに渡されます。
response.authenticationStatus セッションのステータス。たとえば、AuthenticatedChallenge requiredChallenge pending です。
response.challenges この回の認証で試みることができる本人確認方法のセット。これらの本人確認方法のうち、最大 1 つが開始され、ステータスが READY になります。他の方法は、提案された最初の本人確認方法の代わりにユーザーが指定できるオプションとして提示されます。

StartSession 監査ログ

プロパティ
methodName google.cloud.oslogin.OsLoginService.v1.StartSession
request.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.StartSessionRequest
request.supportedChallengeTypes 選択可能な本人確認方法または 2FA 方式のリスト。

ContinueSession 監査ログ

プロパティ
methodName google.cloud.oslogin.OsLoginService.v1.ContinueSession
request.sessionId 前のセッションを一意に識別する ID 文字列。このセッション ID は、シーケンス内の前の API 呼び出しから渡されます。
request.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.ContinueSessionRequest
request.challengeId 開始または実行する本人確認方法を識別する ID 文字列。この ID は、前の API レスポンスで response.challenges 呼び出しから返された本人確認方法に属している必要があります。
request.action 実行する操作。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント