VM 内でのきめ細かいアクセスを構成する


Compute Engine では、OS Login を使用してユーザーに VM へのアクセス権を付与したり、sudo アクセス権を持つユーザーを制限したりできます。VM 内の特定のファイルや実行可能ファイルを表示または実行できるユーザーを制御するには、OS ポリシーを使用して、VM フリート内でファイルの管理を自動化して一元化するポリシーをロールアウトします。

このチュートリアルでは、OS Login グループや OS ポリシーを使用して、複数の VM 上の auth.log ファイル(/var/log/auth.log)に対する表示アクセス権を、sudo アクセス権を持たないユーザーのグループに付与する方法を説明します。

通常、デフォルト構成では、auth.log ファイルの権限は 640 に設定され、ファイルはグループ adm によって所有されます。roles/compute.osAdminLogin IAM ロールが付与されていないユーザーは adm グループに含まれず、sudo へのアクセス権がないため、ファイルに対する読み取りアクセス権がありません。

このチュートリアルでは、特定のファイルに対するユーザー権限の管理を中心に説明していますが、ここで取り上げるワークフローは、VM 上の他のファイルや実行可能ファイルに対する権限の設定用に変更して使用することもできます。

目標

このチュートリアルでは、次のことを学習します。

  • OS Login の Linux グループを作成する方法
  • OS ポリシーの割り当てを使用して、複数の VM でファイルのグループ権限を一度に変更する方法

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

Google Cloud の新規ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトで課金が有効になっていることを確認します

  3. Google Cloud CLI の最新バージョンをインストールするか、最新バージョンに更新します。
  4. 組織の Cloud Identity のグループ管理者であることを確認してください。グループ管理者でない場合は、組織のグループ管理者に OS Login の Linux グループの作成を依頼してください。
  5. VM Manager を有効にします

環境を準備する

auth.log ファイルへのアクセス権を付与する前に、VM をいくつか作成する必要があります。

gcloud compute instances bulk create コマンドを使用して 3 つの VM を作成します。

gcloud compute instances bulk create \
    --name-pattern=tutorial-# \
    --zone=us-west1-a \
    --count=3 \
    --labels=vm=tutorial \
    --metadata=enable-oslogin=TRUE

次のようなメッセージが表示されます。

`Bulk create request finished with status message: [VM instances created: 3, failed: 0.]`

auth.log ファイルのグループ権限を設定する

ユーザーに roles/compute.osAdminLogin IAM ロールを付与せずに auth.log ファイルに対する読み取りアクセス権を付与するには、そのファイルを所有するグループを、そのユーザーが所属する Linux グループに変更します。

OS Login の Linux グループを作成する

OS Login の Linux グループを作成して、OS Login が有効になっている各 VM に表示される Linux の補足グループを追加できます。ローカルの Linux の補足グループの代わりに OS Login の Linux グループを作成すると、すべての VM 上の Linux グループを統一された方法で制御できます。

OS Login の Linux グループを作成するには、次の gcloud beta identity groups create コマンドを使用します。

gcloud beta identity groups create logaccess@ORGANIZATION_DOMAIN \
    --organization=ORGANIZATION_DOMAIN \
    --posix-group=gid=12345,name=logaccess

ORGANIZATION_DOMAIN は、組織に関連付けられたドメイン(example.com)に置き換えます。

OS ポリシーの割り当てを作成する

OS ポリシーを使用して、VM の構成を自動化し、一元化できます。OS ポリシーは、OS ポリシーの割り当てを使用して VM に適用します。auth.log ファイルのデフォルト グループを変更する OS ポリシーで OS ポリシーの割り当てを作成することにより、VM ごとに変更を適用するのではなく、複数の VM で auth.log ファイルのデフォルト グループを一度に変更できます。

OS ポリシーの割り当てを作成する手順は次のとおりです。

  1. ワークステーションでターミナルを開きます。

  2. 次のコマンドを実行して、OS ポリシーの割り当ての .yaml ファイルを作成します。

    touch tutorial-os-policy-assignment.yaml
    
  3. テキスト エディタで tutorial-os-policy-assignment.yaml ファイルを開き、次の仕様を追加します。

    # OS policy assignment that sets the /var/log/auth.log group to logaccess.
    osPolicies:
     - id: log-access-policy
       mode: ENFORCEMENT
       resourceGroups:
           resources:
             - id: grant-log-access
               exec:
                 validate:
                   # Checks if the group is logaccess. If yes, exits  with code 100. If no,
                   # exits with code 101 and proceeds to the `enforce` step.
                   script:
                     if stat -c '%G' /var/log/auth.log | grep -q 'logaccess'; then exit 100; else exit 101; fi
                   interpreter: SHELL
                 enforce:
                   # Changes the group to logaccess and exits with code 100.
                   script:
                     chgrp logaccess /var/log/auth.log && exit 100
    instanceFilter:
     inclusionLabels:
       - labels:
           vm: tutorial
    rollout:
     disruptionBudget:
       fixed: 10
     minWaitDuration: 30s
    

VM への OS ポリシーの割り当てを適用する

VM に OS ポリシーの割り当てを適用する手順は次のとおりです。

  1. gcloud compute os-config os-policy-assignments create コマンドを使用して、OS ポリシーを適用します。

    gcloud compute os-config os-policy-assignments create log-access-assignment \
       --location=us-west1-a \
       --file=log-access-os-policy-assignment.yaml \
       --async
    

    OS ポリシーの割り当ては、tutorial-os-policy-assignment.yaml ファイルに記述されたロールアウト仕様に従って VM にロールアウトされます。

  2. OS ポリシーの割り当てが VM に正常にロールアウトされ、OS ポリシーの割り当てによって、gcloud compute os-config os-policy-assignment-reports list コマンドを使用してデフォルト グループが正常に更新されたことを確認します。

    gcloud compute os-config os-policy-assignment-reports list --location=us-west1-a
    

OS Login の Linux グループにユーザーを追加する

OS Login の Linux グループにユーザーを追加すると、そのユーザーは、OS Login が有効になっているすべての VM のグループの権限を継承します。このチュートリアルでは、logaccess グループに追加したユーザーは、roles/compute.osAdminLogin IAM ロールなしで auth.log ファイルを閲覧できます。

logaccess グループにユーザーを追加する方法については、Cloud Identity のヘルプ ドキュメントをご覧ください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトを削除する

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

リソースを個別に削除する

gcloud compute instances delete コマンドを使用して、作成した VM を削除します。

gcloud compute instances delete tutorial-1 tutorial-2 tutorial-3 \
    --zone=us-west1-a

次のステップ