ネットワークファイルシステム (NFS) レベルのユーザー、グループ、アクセス許可 - Amazon Elastic File System

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ネットワークファイルシステム (NFS) レベルのユーザー、グループ、アクセス許可

ファイルシステムを作成した後、デフォルトでは、ルートユーザー (UID 0) のみが読み取り、書き込み、実行のアクセス許可を持ちます。他のユーザーがファイルシステムを変更できるようにするには、ルートユーザーは、明示的にアクセス許可を付与する必要があります。アクセスポイントを使用すると、root 以外のユーザーによる書き込み可能なディレクトリの作成を自動化できます。詳細については、「Amazon EFSアクセスポイントの使用」を参照してください。

Amazon EFS ファイルシステムオブジェクトには、Unix スタイルのモードが関連付けられています。このモード値は、そのオブジェクトに対してアクションを実行するアクセス許可を定義します。Unix スタイルのシステムに精通しているユーザーは、これらのアクセス許可に関して Amazon EFSがどのように動作するかを簡単に理解できます。

さらに、Unix スタイルのシステムでは、ユーザーとグループは、Amazon がファイルの所有権を表すEFSために使用する数値識別子にマッピングされます。Amazon の場合EFS、ファイルシステムオブジェクト (ファイル、ディレクトリなど) は、単一の所有者と単一のグループによって所有されます。Amazon EFSは、ユーザーがファイルシステムオブジェクトにアクセスしようとしたときに、マッピングされた数値IDsを使用してアクセス許可をチェックします。

注記

NFS プロトコルはユーザーあたり最大 16 個のグループ IDs (GIDs) をサポートし、追加の GIDsはNFSクライアントリクエストから切り捨てられます。詳細については、「NFS ファイルシステム上の許可されたファイルへのアクセスが拒否されました」を参照してください。

以下に、アクセス許可の例と、Amazon のNFSアクセス許可に関する考慮事項について説明しますEFS。

Amazon EFS ファイルシステムのユースケースとアクセス許可の例

Amazon EFS ファイルシステムを作成し、 でファイルシステムのターゲットをマウントしたらVPC、リモートファイルシステムを Amazon EC2インスタンスにローカルにマウントできます。mount コマンドは、ファイルシステムの任意のディレクトリをマウントできます。ただし、最初にファイルシステムを作成するときは、/ にルートディレクトリは 1 つしかありません。ルートユーザーとルートグループは、マウントされたディレクトリを所有します。

次のmountコマンドは、ファイルシステムDNS名で識別される Amazon EFS ファイルシステムのルートディレクトリを/efs-mount-pointローカルディレクトリにマウントします。

sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.aws-region.amazonaws.com:/ efs-mount-point

最初のアクセス許可のモードでは、次のことを許可します。

  • 所有者のread-write-executeルートに対する アクセス許可

  • グループのread-executeルートに対する アクセス許可

  • 他のユーザーに対する read-execute アクセス許可

ルートユーザーのみがこのディレクトリを変更できます。たとえば、ルートユーザーは、他のユーザーにこのディレクトリに書き込むアクセス許可を付与することもできます。

  • 書き込み可能なユーザーごとのサブディレクトリを作成します。 step-by-step 手順については、「」を参照してくださいチュートリアル: ユーザーごとの書き込み可能なサブディレクトリの作成

  • ユーザーに Amazon EFS ファイルシステムルートへの書き込みを許可します。ルート権限を持つユーザーは、他のユーザーにファイルシステムへのアクセスを許可することができます。

    • Amazon EFS ファイルシステムの所有権を非ルートユーザーおよびグループに変更するには、以下を使用します。

      $ sudo chown user:group /EFSroot
    • ファイルシステムのアクセス許可をより制限の低いものに変更するには、以下を使用します。

      $ sudo chmod 777 /EFSroot

      このコマンドは、ファイルシステムがマウントされているすべてのEC2インスタンスのすべてのユーザーに read-write-execute 権限を付与します。

ファイルシステム内のファイルとディレクトリに対するユーザー ID とグループ ID のアクセス許可

Amazon ファイルシステム内のEFSファイルとディレクトリは、ユーザー ID とグループ に基づく標準の Unix スタイルの読み取り、書き込み、および実行のアクセス許可をサポートしますIDs。NFS クライアントがアクセスポイントを使用せずにEFSファイルシステムをマウントすると、クライアントによって提供されるユーザー ID とグループ ID が信頼されます。EFS アクセスポイントを使用して、NFSクライアントがIDs使用するユーザー ID とグループを上書きできます。ユーザーがファイルとディレクトリにアクセスしようとすると、Amazon はユーザーIDsとグループEFSをチェックIDsして、各ユーザーにオブジェクトへのアクセス許可があることを確認します。EFS また、Amazon はこれらIDsを使用して、ユーザーが作成する新しいファイルとディレクトリの所有者とグループ所有者を示します。Amazon EFSはユーザー名やグループ名を調べません。数値識別子のみを使用します。

注記

EC2 インスタンスでユーザーを作成するときに、任意の数値ユーザー ID (UID) とグループ ID (GID) をユーザーに割り当てることができます。数値ユーザーは Linux システムの /etc/passwd ファイルでIDs設定されます。数値グループは /etc/group ファイルIDsにあります。これらのファイルは、名前と 間のマッピングを定義しますIDs。EC2 インスタンスの外部では、Amazon EFSはルート ID 0 を含めIDs、これらの の認証を実行しません。

ユーザーが 2 つの異なるEC2インスタンスから Amazon EFS ファイルシステムにアクセスする場合、UIDユーザーの がそれらのインスタンスで同じか異なるかに応じて、次のように異なる動作が表示されます。

  • ユーザーが両方のEC2インスタンスで同じ場合、Amazon IDsは、使用されているEC2インスタンスに関係なく、同じユーザーを示すEFSと見なします。ファイルシステムにアクセスするときのユーザーエクスペリエンスは、両方のEC2インスタンスで同じです。

  • ユーザーが両方のEC2インスタンスで同じでない場合、Amazon IDsはユーザーを異なるユーザーEFSと見なします。2 つの異なるEC2インスタンスから Amazon EFS ファイルシステムにアクセスする場合、ユーザーエクスペリエンスは同じではありません。

  • 異なるEC2インスタンスの 2 つの異なるユーザーが ID を共有する場合、Amazon はそれらのユーザーを同じユーザーEFSと見なします。

EC2 インスタンス間でユーザー ID マッピングを一貫して管理することを検討してください。ユーザーは、id コマンドを使用して数値 ID を確認することができます。

$ id uid=502(joe) gid=502(joe) groups=502(joe)

ID マッパーを無効にする

オペレーティングシステムのNFSユーティリティには、ユーザー名と 間のマッピングを管理する ID マッパーと呼ばれるデーモンが含まれていますIDs。Amazon Linux では、デーモンは rpc.idmapd と呼ばれ、Ubuntu では、idmapd と呼ばれます。ユーザーとグループIDsを名前に変換し、その逆も同様です。ただし、Amazon は数値 のみをEFS扱いますIDs。EC2 インスタンスでこのプロセスをオフにすることをお勧めします。Amazon Linux では、マッパーは通常無効です。この場合、ID マッパーを有効にしないでください。ID マッパーを無効にするには、以下に示すコマンドを使用します。

$ service rpcidmapd status $ sudo service rpcidmapd stop

ルートスカッシュなし

デフォルトでは、ルートスカッシュはEFSファイルシステムでは無効になっています。Amazon EFS は、 を備えた Linux NFSサーバーのように動作しますno_root_squash。ユーザーまたはグループ ID が 0 の場合、Amazon はそのユーザーをrootユーザーとしてEFS扱い、アクセス許可チェック (すべてのファイルシステムオブジェクトへのアクセスと変更を許可) をバイパスします。 AWS Identity and Access Management (AWS IAM) ID またはリソースポリシーで ClientRootAccessアクションへのアクセスが許可されていない場合、クライアント接続でルートスカッシュを有効にできます。ルートスカッシュが有効になっている場合、ルートユーザーはNFSサーバーに対するアクセス許可が制限されたユーザーに変換されます。

詳細については、「IAM を使用してファイルシステムのデータアクセスを制御する」を参照してください。

NFS クライアントのIAM認証を使用してルートスカッシュを有効にする

1 つの管理ワークステーションを除くすべての AWS プリンシパルに対して、Amazon EFS ファイルシステムへのルートアクセスを防ぐEFSように Amazon を設定できます。これを行うには、ネットワークファイルシステム AWS Identity and Access Management (IAM) クライアントの (NFS) 認証を設定します。

そのためには、次のように 2 つのIAMアクセス許可ポリシーを設定する必要があります。

  • EFS ファイルシステムへの読み取りおよび書き込みアクセスを明示的に許可し、ルートアクセスを暗黙的に拒否するファイルシステムポリシーを作成します。

  • Amazon EC2インスタンスプロファイルを使用して、ファイルシステムへのルートアクセスを必要とする IAM ID を Amazon EC2管理ワークステーションに割り当てます。Amazon EC2インスタンスプロファイルの詳細については、「 AWS Identity and Access Management ユーザーガイド」の「インスタンスプロファイルの使用」を参照してください。

  • AmazonElasticFileSystemClientFullAccess AWS 管理ポリシーを管理ワークステーションのIAMロールに割り当てます。の AWS マネージドポリシーの詳細についてはEFS、「」を参照してくださいAmazon の Identity and Access Management EFS

NFS クライアントのIAM認証を使用してルートスカッシュを有効にするには、次の手順を使用します。

ファイルシステムへのルートアクセスを無効にするには
  1. で Amazon Elastic File System コンソールを開きますhttps://console.aws.amazon.com/efs/

  2. [File Systems (ファイルシステム)] を選択します。

  3. ルートスカッシュを有効にするファイルシステムを選択します。

  4. [File System details] ページで、[ファイルシステムポリシー] 、続いて編集を選択します。[File system policy (ファイルシステムポリシー)] ページが表示されます。

  5. ポリシーオプション選択デフォルトで root アクセスを禁止する*を選択します。ポリシーJSONオブジェクトがポリシーエディタ に表示されます。

  6. [Save (保存)] を選択して、ファイルシステムポリシーを保存します。

非匿名クライアントは、アイデンティティベースのポリシーを通じてファイルシステムへのルートアクセスを取得できます。AmazonElasticFileSystemClientFullAccess 管理ポリシーをワークステーションのロールにアタッチすると、 は ID ポリシーに基づいてワークステーションへのルートアクセスIAMを許可します。

管理ワークステーションからルートアクセスを有効にするには
  1. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  2. EC2 という Amazon のロールを作成しますEFS-client-root-access。IAM は、作成したEC2ロールと同じ名前のインスタンスプロファイルを作成します。

  3. 作成したEC2ロールAmazonElasticFileSystemClientFullAccessに AWS 管理ポリシーを割り当てます。このポリシーの内容は次のとおりです。

    { "Version”: "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientRootAccess", "elasticfilesystem:ClientWrite", "elasticfilesystem:DescribeMountTargets" ], "Resource": "*" } ] }
  4. 以下に説明するように、管理ワークステーションとして使用しているインスタンスにEC2インスタンスプロファイルをアタッチします。詳細については、「Linux インスタンス用 Amazon ユーザーガイド」の「インスタンスへのIAMロールのアタッチ」を参照してください。 EC2

    1. で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/

    2. ナビゲーションペインで、[インスタンス] を選択します。

    3. インスタンスを選択します。アクション で、インスタンス設定 を選択し、IAMロール のアタッチ/置換 を選択します。

    4. 最初のステップで作成したIAMロール EFS-client-root-accessを選択し、適用 を選択します。

  5. 管理ワークステーションにEFSマウントヘルパーをインストールします。EFS マウントヘルパーと amazon-efs-utils パッケージの詳細については、「」を参照してくださいAmazon EFSクライアントのインストール

  6. マウントオプションで次のコマンドを使用して、管理ワークステーションにEFSファイルシステムをiamマウントします。

    $ sudo mount -t efs -o tls,iam file-system-id:/ efs-mount-point

    IAM 認証を使用してファイルシステムを自動的にマウントするように Amazon EC2インスタンスを設定できます。IAM 認証付きEFSファイルシステムのマウントの詳細については、「」を参照してくださいIAM 認可付きのマウント

アクセス許可のキャッシュ

Amazon は、短期間、ファイルのアクセス許可をEFSキャッシュします。その結果、最近アクセスを取り消されたユーザーが、まだそのオブジェクトに短期間アクセスできることがあります。

ファイルシステムオブジェクトの所有権の変更

Amazon は POSIX chown_restricted 属性EFSを適用します。これは、ルートユーザーだけがファイルシステムオブジェクトの所有者を変更できることを意味します。ルートユーザーまたは所有者ユーザーは、ファイルシステムオブジェクトの所有者グループを変更できます。ただし、ユーザーがルートでない限り、そのグループは所有者ユーザーがメンバーになっているものにのみ変更できます。

EFS アクセスポイント

アクセスポイントは、アクセスポイントを介したすべてのシステム要求に対して、オペレーティングシステムのユーザー、グループ、およびファイルシステムのパスを適用します。アクセスポイントのオペレーティングシステムのユーザーとグループは、NFSクライアントから提供された ID 情報を上書きします。ファイルシステムのパスは、アクセスポイントのルートディレクトリとしてクライアントに公開されます。このアプローチにより、各アプリケーションは共有ファイルベースのデータセットにアクセスするときに、常に正しいオペレーティングシステム ID と正しいディレクトリを使用できます。アクセスポイントを使用するアプリケーションは、それ自体のディレクトリ以下のデータにのみアクセスできます。アクセスポイントの詳細については、「Amazon EFSアクセスポイントの使用」を参照してください。