次のガイドでは、新しい Filestore インスタンスで NFSv4.1 プロトコルを実装する方法について説明します。
NFSv4.1 について
Filestore では、次のサービスティアで作成されたインスタンスに対して、NFSv4.1 プロトコル(プレビュー)がサポートされています。
- ゾーン
- リージョン
- Enterprise
この機能は、Managed Service for Microsoft Active Directory(Managed Microsoft AD)と統合して、クライアントとサーバーの認証、メッセージ データの完全性チェック、および転送中のデータの暗号化(Filestore では以前に利用できなかった機能)を必要とするワークロードをサポートします。
認証は LDAP と Kerberos を使用して行われ、次のセキュリティ フレーバー(設定)が含まれます。
- クライアントとサーバーの認証(
krb5
)。 - メッセージ完全性チェック(
krb5i
)。前の設定の機能が含まれています。 - 転送中のデータの暗号化(
krb5p
)。前の設定の機能が含まれています。
- クライアントとサーバーの認証(
Managed Microsoft AD は、LDAP と Kerberos の両方およびNFSv4.1 プロトコルとそのセキュリティとプライバシーの便益の要件をサポートする唯一のフルマネージド Google Cloud ソリューションです。Managed Microsoft AD との統合は必須ではありませんが、ユーザー アカウントを管理し、変動するグループと権限を管理する最適な Google Cloud ユーザー エクスペリエンスを強くおすすめします。
NFSv4.1 を使用するべきか
多くの企業組織は、ビジネス クリティカルな運用で以前のシステムに依存しています。これらのシステムの多くは、ネットワーク ファイル ストレージの認証と転送中の暗号化を必要とします。NFSv3 は認証を念頭に置いて設計されたものではありません。Filestore の NFSv4.1 プロトコルと Managed Microsoft AD の統合は、この重要なユーザー要件を満たすようになりました。
目標
このガイドでは、次のタスクを行う方法について説明します。
NFSv4.1 を使用する Filestore インスタンスを作成する
Filestore インスタンスで Managed Microsoft AD を使用するには、Filestore インスタンスの前に Managed Microsoft AD ドメインを作成する必要があります。
準備
Managed Microsoft AD ドメインと Filestore インスタンスの両方が、同じプロジェクトで同じ VPC を使用する必要があります。
Managed Microsoft AD サービスが、使用する Filestore インスタンスとは別のプロジェクトでホストされている場合、Filestore VPC ネットワークは、Managed Microsoft AD ドメインにピアリングする必要があります。
詳細については、ドメイン ピアリングを使用してプロジェクト間のアクセスで Managed Microsoft AD をデプロイするをご覧ください。
Managed Microsoft AD ユーザーが、次のように POSIX RFC 2307 フィールドと RFC 2307bis フィールドに入力されていることを確認します。
Managed Microsoft AD でオブジェクトを構成する方法の詳細については、Managed Active Directory オブジェクトをご覧ください。
Active Directory ユーザーとコンピュータ
以下の手順では、LDAP のユーザーとグループに設定する必要がある属性について説明します。MMC のスナップインの [Active Directory ユーザーとコンピュータ] を使用して、POSIX 属性を管理できます。
次の手順で [属性エディタ] を開きます。
- [開始] をクリックします。
[Windows 管理ツール] をクリックし、[Active Directory ユーザーとコンピュータ] を選択します。
[Active Directory ユーザーとコンピュータ] ウィンドウが開きます。
表示するドメイン名を選択します。コンテンツを開くには、
展開矢印をクリックします。[Active Directory ユーザーとコンピュータ] の [表示] メニューで、[高度な機能] を選択します。
左側のペインで [ユーザー] をダブルクリックします。
ユーザーリストでユーザーをダブルクリックして、[属性エディタ] タブを表示します。
LDAP ユーザーには、次の属性を設定する必要があります。
uid
uidNumber
cn
gidNumber
objectClass
各ユーザーに固有の
uidNumber
が必要です。uid
属性の値では、大文字と小文字が区別されることに注意してください。ほとんどの Active Directory(AD)デプロイでは、objectClass
属性でuser
がデフォルト設定になります。次に例を示します。uid: Alice uidNumber: 139 gidNumber: 555 objectClass: user
LDAP グループには、次の属性を設定する必要があります。
cn
gidNumber
objectClass
各グループに一意の
gidNumber
が必要です。cn
属性の値では、大文字と小文字が区別されることに注意してください。objectClass
属性では、ほとんどの AD デプロイでgroup
がデフォルト設定です。次に例を示します。cn: AliceGroup gidNumber: 555 objectClass: group
gcloud projects add-iam-policy-binding
コマンドを使用して、Managed Microsoft AD でオブジェクトを作成、管理するアクセス権を Filestore に付与します。gcloud projects add-iam-policy-binding MANAGED_MICROSOFT_AD_PROJECT_ID \ --member=serviceAccount:service-$(gcloud projects describe PROJECT_ID \ --format='value(PROJECT_ID)')@cloud-filer.iam.gserviceaccount.com \ --role=roles/managedidentities.filestoreintegrator
以下を置き換えます。
- MANAGED_MICROSOFT_AD_PROJECT_ID は、Managed Microsoft AD ドメインが配置されているプロジェクトのプロジェクト ID です。
- PROJECT_ID は、Filestore インスタンスが配置されているプロジェクトのプロジェクト ID です。
次のエラーが表示される場合があります。
INVALID_ARGUMENT: Service account service-PROJECT_ID@cloud-filer.iam.gserviceaccount.com does not exist.
その場合は、次のコマンドを使用して解決します。
gcloud beta services identity create --service=file.googleapis.com -project \ MANAGED_MICROSOFT_AD_PROJECT_ID
Managed Microsoft AD の有無にかかわらず Filestore インスタンスを作成する
このセクションでは、NFSv4.1 プロトコルで使用するために構成された Filestore インスタンスを作成します。Managed Microsoft AD を使用しないことを選択したユーザー向けの省略可能な手順が含まれています。
十分な割り当てがあることを確認してください。
使用するリージョン ロケーションとサービス階層ごとのインスタンスの割り当て範囲。使用可能な割り当てを増やすには、割り当ての引き上げリクエストを送信する必要があります。
Google Cloud コンソール
インスタンス パラメータを設定する
Google Cloud コンソールで、Filestore インスタンス ページに移動します。
[インスタンスを作成] をクリックします。
インスタンスの基本パラメータ(名前、インスタンス タイプ、容量など)を指定します。
- [インスタンス ID] フィールドに、Filestore インスタンスに使用する名前を入力します。
[インスタンス タイプ] で、[リージョン] または [ゾーン] を選択します。
エンタープライズ インスタンスを作成するには、Filestore API を使用してオペレーションを直接実行する必要があります。
[割り当てられた容量] に、使用する容量を入力します。1 TB と 10 TB の間の値を 256 GiB(0.25 TiB)刻みで入力する必要があります。
[リージョン] で、使用するリージョンを選択します。
[VPC ネットワーク] で、Filestore インスタンスと NFS クライアントに使用するネットワークを選択します。
- Managed Microsoft AD が Filestore インスタンスと同じプロジェクトにある場合は、VPC ネットワークを Managed Microsoft AD ドメインで承認する必要があります。
- Managed Microsoft AD が別のプロジェクトにある場合、VPC ネットワークは、Managed Microsoft AD 構成で Active Directory ネットワーク ピアリングで構成する必要があります。
[割り振られた IP 範囲] で、[自動的に割り振られた IP 範囲を使用する(推奨)] を選択します。
[プロトコル] で [NFSv4.1] を選択します。
インスタンスの認証設定を構成する
- インスタンスの認証設定を構成します。
- [認証] をクリックします。
- Managed Microsoft AD をホストするプロジェクトを選択します。このガイドでは、現在のプロジェクトを使用するプロジェクトであると仮定します。
- [Active Directory ドメインに参加] リストで、使用する Managed Microsoft AD ドメインを選択します。
- [コンピュータ アカウント名] フィールドに、Managed Microsoft AD ドメインで Filestore インスタンスを識別するために使用するコンピュータ アカウント名を入力します。名前は半角英数字 15 文字以内で入力してください。
- [ファイル共有の名前] フィールドに、NFSv4.1 クライアントで使用される共有の名前を入力します。
[アクセス制御] ペインで、次のいずれかの手順を行います。
Managed Microsoft AD を使用する場合は、[IP アドレスまたは範囲でアクセスを制限する] を選択します。
- 定義する IP またはサブネットによってアクセスルールを設定します。このガイドでは、次の設定を使用します。
- [IP アドレスまたは範囲 1] フィールドに、使用する IP アドレスまたは範囲を入力します。
- [アクセス 1] プルダウン リストをクリックし、[管理者] を選択します。
- [マウント
sec=
1] プルダウン リストをクリックし、[シス] チェックボックスをオンにします。
Filestore のデフォルトの
/
のオーナーはroot
です。他のユーザーとグループのインスタンスへのアクセスを有効にするには、Admin
ロールとsec=sys
セキュリティ設定を使用して、管理 VM アクセスを有効にするアクセスルールを作成する必要があります。Managed Microsoft AD を使用していない場合は、[VPC ネットワーク上のすべてのクライアントへのアクセス権を付与する] を選択します。
Managed Microsoft AD を使用していない場合、サポートされるセキュリティ設定は
sec=sys
のみです。
[作成] をクリックしてインスタンスを作成します。
gcloud
-
gcloud CLI がすでにインストールされている場合は、次のコマンドを実行して更新します。
gcloud components update
次のいずれかの手順を実行します。
Managed Microsoft AD を使用している場合は、次の
gcloud beta filestore instances create
コマンドを実行して、Filestore ゾーン、リージョン、エンタープライズ インスタンスを作成します。gcloud beta filestore instances create INSTANCE-ID \ --description="DESCRIPTION" \ --region=LOCATION \ --tier=TIER \ --protocol=PROTOCOL \ --file-share=name="FILE_SHARE_NAME",capacity=CAPACITYTB \ --network=name="VPC_NETWORK",connect-mode=CONNECT_MODE,reserved-ip-range="RESERVED_IP_RANGE" \ --managed-ad=domain=projects/MANAGED_AD_PROJECT_ID/locations/global/domains/MANAGED_AD_DOMAIN_NAME,computer=DOMAIN_COMPUTER_ACCOUNT \ --project=CONSUMER_PROJECT_ID
以下を置き換えます。
- INSTANCE_ID は作成する Filestore インスタンスのインスタンス ID です。インスタンスに名前を付けるをご覧ください。
- DESCRIPTION は、使用するインスタンスの説明です。
- LOCATION は、Filestore インスタンスを配置する場所です。
- TIER は、使用するサービス階層に置き換えます。
- PROTOCOL は
NFS_v4_1
に設定されています。 - FILE_SHARE_NAME は、インスタンスから提供される NFS ファイル共有に指定する名前です。
- CAPACITY は、ファイル共有に使用するサイズで、1 TiB と 10 TiB の間です。
VPC_NETWORK は、インスタンスで使用する VPC ネットワークの名前です。VPC ネットワークを選択するをご覧ください。サービス プロジェクトから共有 VPC を指定する場合は、完全修飾ネットワーク名を指定します。これは形式
projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME
で、次のようにconnect-mode=PRIVATE_SERVICE_ACCESS
を指定する必要があります。--network=name=projects/host/global/networks/shared-vpc-1,connect-mode=PRIVATE_SERVICE_ACCESS
vpc_network 値に以前のネットワークを指定することはできません。必要に応じて、自動モードの VPC ネットワークを作成するの手順に従って、使用する新しい VPC ネットワークを作成します。
MANAGED_AD_PROJECT_ID は、Managed Microsoft AD サービスが配置されているプロジェクト ID です。
MANAGED_AD_DOMAIN_NAME は、使用する Managed Microsoft AD サービスのドメイン名です。それは、Managed Microsoft AD ドメインを作成するときに選択するドメイン名です。
DOMAIN_COMPUTER_ACCOUNT は、ドメイン内で呼び出すクラスタの名前です。
CONSUMER_PROJECT_ID は、Filestore インスタンスを含むプロジェクトのプロジェクト ID です。
CONNECT_MODE は
DIRECT_PEERING
またはPRIVATE_SERVICE_ACCESS
です。 共有 VPC をネットワークとして指定する場合は、接続モードとしてPRIVATE_SERVICE_ACCESS
も指定する必要があります。このフラグは、VPC ネットワーク ピアリングに必要です。これは、Managed Microsoft AD を使用する場合の要件です。RESERVED_IP_RANGE は、Filestore インスタンスの IP アドレス範囲です。
connect-mode=PRIVATE_SERVICE_ACCESS
が指定されていて、予約された IP アドレス範囲を使用する場合は、CIDR 範囲ではなく、割り当てられたアドレス範囲の名前を指定する必要があります。予約済み IP アドレスを構成するをご覧ください。このフラグを省略して、Filestore が空いている IP アドレス範囲を自動的に見つけてインスタンスに割り当てられるようにすることをおすすめします。
Managed Microsoft AD を使用しない場合は、前の手順と同じコマンドを実行して Filestore インスタンスを作成します。
--managed-ad
フラグと、VPC ネットワーク ピアリングのフラグ、つまりconnect-mode
とreserved-ip-range
は省略します。たとえば、次のコマンドを使用します。gcloud beta filestore instances create INSTANCE-ID \ --description="DESCRIPTION" \ --region=LOCATION \ --tier=TIER \ --protocol=PROTOCOL \ --file-share=name="FILE_SHARE_NAME",capacity=CAPACITYTB \ --network=name="VPC_NETWORK" \ --project=CONSUMER_PROJECT_ID
NFSv4.1 のネットワーク ベースのアクセス制御リスト(ACL)について。
NFSv3 では、sys
セキュリティ フレーバーのみがサポートされています。この設定では、マウント中にクライアントによって提供されたユーザー uid
と gid
が信頼されます。
Filestore NFSv4.1 プロトコルでは、いくつかのネットワーク ACL セキュリティ フレーバーまたは設定を使用できます。
krb5
Kerberos チケットを使用してクライアントを認証します。これは、Managed Microsoft AD Kerberos サーバーに対して検証されます。
krb5i
krb5
によって提供される認証を含み、インスタンスとの間のすべてのネットワーク トラフィックに対してメッセージの完全性チェックを実行するために Kerberos も使用します。krb5p
krb5
によって提供される認証とkrb5i
のメッセージ完全性チェックを含み、転送中のデータの暗号化に Kerberos を使用します。
これらのオプションを利用するには、Managed Service for Microsoft Active Directory の統合が必要です。
Managed Service for Microsoft Active Directory ドメインが指定されていない場合、sys
セキュリティ フレーバーのみがサポートされます。
詳細については、NFSv4.1 の制限事項をご覧ください。
Linux クライアントへの Filestore NFSv4.1 インスタンスのマウント
以下の手順では、Linux クライアントにインスタンスをマウントする方法を説明します。
標準の NFS 権限の場合は
sec=sys
でマウントします。sudo mount -vvvv -t nfs4 -o vers=4.1,sec=sys,rw \ FILESTORE-INSTANCE-FQDN:/INSTANCE_SHARE_POINT /MOUNT_POINT
Kerberos ベースの認証の場合は
sec=krb5
でマウントします。sudo mount -vvvv -t nfs4 -o vers=4.1,sec=krb5i,rw \ FILESTORE-INSTANCE-FQDN:/INSTANCE_SHARE_POINT /MOUNT_POINT
Kerberos ベースの認証とメッセージ完全性チェックの場合は
sec=krb5i
でマウントします。sudo mount -vvvv -t nfs4 -o vers=4.1,sec=krb5i,rw \ FILESTORE-INSTANCE-FQDN:/INSTANCE_SHARE_POINT /MOUNT_POINT
Kerberos ベースの認証、完全性チェック、転送中の暗号化の場合は
sec=krb5p
でマウントします。sudo mount -vvvv -t nfs4 -o vers=4.1,sec=krb5p,rw \ FILESTORE-INSTANCE-FQDN:/INSTANCE_SHARE_POINT /MOUNT_POINT
以下を置き換えます。
- FILESTORE-INSTANCE-FQDN は、Filestore インスタンスが配置されている完全修飾ドメイン名です。
- INSTANCE_SHARE_POINT は、接続する Filestore インスタンスのファイル共有名です。
- MOUNT_POINT は、マウントするマウント ポイントまたはディレクトリ名です。
Linux クライアントの構成
NFSv4.1 Filestore インスタンスによって、クライアントはさまざまなセキュリティ フレーバーを使用して NFS オペレーションを実行できます。これらのフレーバーは、インスタンス管理者が Filestore NFSv4.1 インスタンスのネットワーク ACL を通じて、作成中または作成後に更新した場合に構成されます。
sys
セキュリティ フレーバーは標準の Unix 認証を使用しますが、krb5
、krb5i
、krb5p
フレーバーは Kerberos ベースの認証を使用します。
krb5
、krb5i
、krb5p
フレーバーでは、クライアントを Filestore インスタンスと同じ Managed Microsoft AD ドメインに接続する必要があります。ご利用の環境に応じて、次の手順を行います。
Ubuntu イメージ
- Compute Engine インスタンスに SSH 接続します。
次のコマンドを実行して、Managed Microsoft AD ドメインに参加します。
次のコマンドを実行します。
sudo apt-get update \ sudo apt-get -y -qq install adcli realmd sssd sssd-tools packagekit krb5-user \ nfs-common expect retry
レルムの入力を求められたら、既存のエントリを Filestore インスタンスで使用されている Managed Microsoft AD ドメインに置き換えます。値を大文字で入力してから、矢印キーを押して [OK] を選択し、[Enter] キーを押します。
ホストが求められたら、空白のまま続行します。
次のいずれかの手順を実行します。
ホスト名の長さが 15 文字以下の VM の場合は、次のコマンドを実行します。
sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no MANAGED_AD_DOMAIN_NAME
以下を置き換えます。
- JOIN_DOMAIN_USER は、ドメインに参加するために使用されるユーザー アカウントの名前です。
- MANAGED_AD_DOMAIN_NAME は、使用する Managed Microsoft AD サービスのドメイン名です。
ホスト名の長さが 15 文字を超える VM の場合は、次のコマンドを実行します。
sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no \ --user-principal=host/`hostname -f`@MANAGED_AD_REALM_NAME MANAGED_AD_DOMAIN_NAME
以下を置き換えます。
- JOIN_DOMAIN_USER は、ドメインに参加するために使用されるユーザー アカウントの名前です。
- MANAGED_AD_REALM_NAME は、使用する Managed Microsoft AD サービスのレルム名です。
- MANAGED_AD_DOMAIN_NAME は、使用する Managed Microsoft AD サービスのドメイン名です。
Kerberos 構成を更新します。
/etc/krb5.conf
を、必要なレルムの定義とレルムドメイン マッピングで更新します。[realms] DOMAIN_NAME = { kdc = DOMAIN_NAME default_domain = DOMAIN_NAME } [domain_realm] .domain_name_lowercase = DOMAIN_NAME domain_name_lowercase = DOMAIN_NAME
以下を置き換えます。
- DOMAIN_NAME は、使用するドメイン名です。大文字で入力します。
- domain_name_lowercase は、使用するドメイン名です。小文字で入力します。
例については、以下をご覧ください。
[realms] FILE.DEMO.LOCAL = { kdc = FILE.DEMO.LOCAL default_domain = FILE.DEMO.LOCAL } [domain_realm] .file.demo.local = FILE.DEMO.LOCAL file.demo.local = FILE.DEMO.LOCAL
rpc-gssd サービスを実行します。次の
No-Strip
属性値を/etc/idmapd.conf
内の[General]
セクションに追加します。[General] No-Strip = both
次のコマンドを実行します。
sudo systemctl restart rpc-gssd
CentOS のイメージ
- Compute Engine インスタンスに SSH 接続します。
Managed Microsoft AD ドメインに参加します。
sudo yum update \ sudo yum install -y adcli realmd sssd samba-common-tools krb5-workstation nfs-utils \ bind-utils openldap-clients
次のいずれかの手順を実行します。
ホスト名の長さが 15 文字以下の VM の場合は、次のコマンドを実行します。
sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no MANAGED_AD_DOMAIN_NAME
以下を置き換えます。
- JOIN_DOMAIN_USER は、ドメインへの参加に使用されるユーザー アカウントの名前です。
- MANAGED_AD_DOMAIN_NAME は、使用する Managed Microsoft AD サービスのドメイン名です。
ホスト名の長さが 15 文字を超える VM の場合は、次のコマンドを実行します。
sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no \ --user-principal=host/`hostname -f`@MANAGED_AD_REALM_NAME MANAGED_AD_DOMAIN_NAME
以下を置き換えます。
- JOIN_DOMAIN_USER は、ドメインへの参加に使用されるユーザー アカウントの名前です。
- MANAGED_AD_REALM_NAME は、使用する Managed Microsoft AD サービスのレルム名です。
- MANAGED_AD_DOMAIN_NAME は、使用する Managed Microsoft AD サービスのドメイン名です。
sssd サービスが実行されていることを確認します。
sudo systemctl status sssd
rpc-gssd サービスを実行します。
/etc/idmapd.conf
内の[General]
セクションに、以下のNo-Strip
属性値を追加します。[General] No-Strip = both
以下のコマンドを実行します。このコマンドは、NFS クライアントが NFS サーバーのホスト名からドメイン名を削除しないようにするのに役立ちます。詳細については、NFS Ganesha リスト アーカイブと Arch Linux アーカイブをご覧ください。
sudo systemctl start rpc-gssd
Filestore インスタンスから Managed Microsoft AD に接続解除して再接続する
Google Cloud コンソール
Filestore インスタンスから Managed Microsoft AD を接続解除する
Managed Microsoft AD に接続されている Filestore インスタンスを接続解除します。
Google Cloud コンソールで、Filestore インスタンス ページに移動します。
編集するインスタンスのインスタンス ID をクリックします。
[NFS マウント ポイント] ペインの [プロトコル] の下の [ディレクトリ サービス名] の隣の
[AD ドメインを接続解除する] をクリックします。[ドメインからの接続解除に失敗した] ウィンドウで、アラートを読んでから、[インスタンスを編集する] をクリックします。
アクセス制御の少なくとも 1 つのルールは、Access=Admin Mountと
sec=
sys などのsys
マウント セキュリティ設定で管理者ロールにマッピングされる必要があります。[共有を編集する] ペインで、[アクセス] が [管理者] に設定されているルールを特定します。[Mount
sec=
...] をクリックし、sys
を選択して、そのオプションを既存の設定に追加します。[OK] をクリックします。
[保存] をクリックします。
[ディレクトリ サービス名] の横で、
[AD ドメインを接続解除する] をクリックします。[ドメインから接続解除しますか?] ウィンドウのフィールドに、接続解除するドメインの名前を入力します。
[接続を解除] をクリックします。
アクセスルールを編集する
ページを更新すると、[ディレクトリ サービス名] が [なし] に設定されていることに注意してください。
[編集] をクリックします。
[共有を編集する] ペインで、編集者などの管理者以外のロールへのアクセス権を設定するルールを特定します。ルールで [Mount
sec=
...] をクリックし、sys
を選択して既存の設定に追加します。[OK] をクリックします。[保存] をクリックします。
ページを更新してください。
ルールの設定が更新されます。
Managed Microsoft AD を Filestore インスタンスに再接続する
Filestore インスタンスを Managed Microsoft AD に再接続します。
[NFS マウント ポイント] ペインの [プロトコル] の下の [ディレクトリ サービス名] の隣の
[AD ドメインに参加する] をクリックします。[このインスタンスを Active Directory ドメインに参加させる] ウィンドウで [現在のプロジェクトのドメインを使用する] を選択し、[Active Directory ドメインに参加する] メニューで使用するドメインを選択します。
[コンピュータ アカウント名] メニューで名前を入力します。
[ドメインに参加する] をクリックします。
ページを更新すると、[ディレクトリ サービス名] が選択によって更新されていることに注意してください。
[編集] をクリックします。
[共有を編集する] ペインで、該当するすべてのルールで [Mount
sec=
...] をクリックし、sys
の選択を解除します。[OK] をクリックします。[保存] をクリックします。
ページを更新してください。
ルールの設定が更新されます。