Amazon Web Services ブログ

Amazon EFS の新機能 – IAM 認証とアクセスポイント

アプリケーションを構築または移行する際に、多くの場合、複数の計算ノード間でデータを共有する必要があります。 多くのアプリケーションはファイル API を使用し、Amazon Elastic File System (EFS) では AWS でそれらのアプリケーションを簡単に使用できます。他の AWS サービスおよびオンプレミスリソースからアクセスできる、スケーラブルでフルマネージド型の Network File System (NFS) を提供します。

EFS は、中断することなく、オンデマンドでゼロからペタバイトまで拡張します。また、ファイルを追加および削除すると自動的に拡大および縮小を行い、容量をプロビジョニングして管理する必要性を取り除きます。これを使用することにより、3 つのアベイラビリティーゾーン間で強力なファイルシステムの一貫性が得られます。EFS パフォーマンスは、必要なスループットをプロビジョニングするオプションを使用して、保存されているデータの量に応じて拡大します。

昨年、EFS チームは、EFS Infrequent Access (IA) ストレージクラスを導入することでコストの最適化に注力し、ストレージ料金が EFS 標準と比較して最大 92% 低くなりました。一定期間アクセスされていないファイルを EFS IA に移動するようにライフサイクル管理ポリシーを設定することにより、コストをすぐに削減できます。

現在、アクセスの管理、データセットの共有、EFS ファイルシステムの保護を簡素化する 2 つの新機能を導入しています。

  • NFS クライアントの IAM 認証と承認により、クライアントを識別し、IAM ポリシーを使用してクライアント固有の権限を管理します。
  • EFS アクセスポイントは、オペレーティングシステムのユーザーとグループの使用を強制し、オプションでファイルシステム内のディレクトリへのアクセスを制限します。

IAM 認証および承認の使用
EFS コンソールで、EFS ファイルシステムを作成または更新するときに、ファイルシステムポリシーを設定できるようになりました。これは、Amazon Simple Storage Service (S3) のバケットポリシーに類似した IAM リソースポリシーであり、たとえば、ルートアクセスを無効にしたり、読み取り専用アクセスを強制したり、すべてのクライアントに転送中の暗号化を強制したりするために使用できます。

IAM ユーザー、グループ、またはロールで使用されるポリシーなどの ID ベースのポリシーは、これらのデフォルトの権限を上書きできます。これらの新機能は、セキュリティグループを使用した EFS の現在のネットワークベースのアクセス上で機能します。

デフォルトでルートアクセスを無効にするオプションを選択し、ポリシーを設定をクリックして、JSON タブを選択します。ここで、設定に基づいて生成されたポリシーを確認するか、たとえば、別の AWS アカウントまたは特定の IAM ロールに権限を付与するなど、より高度なポリシーを作成できます。

IAM ポリシーで次のアクションを使用して、NFS クライアントの権限を管理できます。

  • ClientMount 読み取り専用アクセスでファイルシステムをマウントする権限を与える
  • ClientWrite でファイルシステムに書き込むことができる
  • ClientRootAccess でルートとしてファイルにアクセスする

ポリシー JSON をご覧ください。ファイルシステムをマウントおよび読み取り (ClientMount) でき、ファイルシステムに書き込み (ClientWrite) できることがわかります。ただし、ルートアクセスを無効にするオプションを選択したため、ClientRootAccess 権限がありません。

同様に、IAM ユーザーまたはロールにポリシーをアタッチして、特定の権限を付与できます。たとえば、IAM ロールを作成して、このポリシーでこのファイルシステムへのフルアクセス (ルートアクセスを含む) を許可します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite",
                "elasticfilesystem:ClientRootAccess"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-2:123412341234:file-system/fs-d1188b58"
        }
    ]
}

EFS ファイルシステムと同じ Amazon Virtual Private Cloud Amazon Linux 2 とファイルシステムに接続できるセキュリティグループを使用して、Amazon Elastic Compute Cloud (EC2) インスタンスを開始します。EC2 インスタンスは、作成したばかりの IAM ロールを使用しています。

IAM 認証、転送中の暗号化、またはその両方を使用してクライアントを接続するには、オープンソース efs-utils が必要です。通常、Amazon Linux 2 では、yum を使用して efs-utils をインストールしますが、新しいバージョンはまだ公開されているので、このリポジトリのソースからパッケージをビルドする手順を実行します。更新されたパッケージが利用可能になったら、このブログ記事を更新します。

EFS ファイルシステムをマウントするには、mount コマンドを使用します。転送中の暗号化を活用するために、tls オプションを追加します。ここでは IAM 認証を使用していないため、ファイルシステムポリシーの「*」プリンシパルに指定した権限がこの接続に適用されます。

$ sudo mkdir /mnt/shared
$ sudo mount -t efs -o tls fs-d1188b58 /mnt/shared

ファイルシステムポリシーはデフォルトでルートアクセスを無効にしているため、新しいファイルをルートとして作成することはできません。

$ sudo touch /mnt/shared/newfile
touch: cannot touch ‘/mnt/shared/newfile’: Permission denied

現在、mount コマンドに iam オプションを追加して IAM 認証を使用しています (IAM 認証を機能させるには tls が必要です)。

$ sudo mount -t efs -o iam,tls fs-d1188b58 /mnt/shared

このマウントオプションを使用すると、EC2 インスタンスプロファイルの IAM ロールが、ルートアクセスを含むロールにアタッチされた権限とともに接続に使用されます。

$ sudo touch /mnt/shared/newfile
$ ls -la /mnt/shared/newfile
-rw-r--r-- 1 root root 0 Jan  8 09:52 /mnt/shared/newfile

ここでは、IAM ロールを使用してルートアクセスを取得しました。その他の一般的な使用例は、「転送中の暗号化」を強制する (aws: SecureTransport 条件キーを使用) か、書き込みまたは読み取り専用アクセスを必要とするクライアントに異なるロールを作成するなどがあります。

EFS IAM 権限チェックは、ファイルシステムへのクライアントアクセスを監査するために AWS CloudTrail によって記録されます。たとえば、クライアントがファイルシステムをマウントすると、CloudTrail コンソールNewClientConnection イベントが表示されます。

EFS アクセスポイントの使用
EFS アクセスポイントを使用すると、NFS 環境へのアプリケーションアクセスを簡単に管理できます。ファイルシステムへのアクセス時に使用する POSIX ユーザーとグループを指定し、ファイルシステム内のディレクトリへのアクセスを制限できます。

EFS アクセスポイントの利点を活用できるユースケースには、次のものがあります。

  • 開発者が独自のコンテナを構築およびデプロイするコンテナベースの環境です (コンテナストレージに EFS を使用するこのブログ記事もご覧ください)。
  • 実稼働データへの読み取り専用アクセスが必要なデータサイエンスアプリケーションです。
  • ファイルシステム内の特定のディレクトリを他の AWS アカウントと共有します。

EFS コンソールで、ファイルシステム用に 2 つのアクセスポイントを作成し、それぞれ異なる POSIX ユーザーとグループを使用します。

  • /data – 複数のクライアントが読み取りと更新を行う必要があるデータを共有する場所です。
  • /config – クライアントが /data アクセスポイントを使用して更新してはならないいくつかの設定ファイルを共有します。

両方のアクセスポイントにファイル権限 755 を使用しました。これは、すべてのユーザーに読み取りおよび実行アクセス権を与え、ディレクトリの所有者にのみ書き込みアクセス権を与えることを意味します。 ここでの権限は、ディレクトリを作成するときに使用されます。ディレクトリ内では、権限はユーザーの完全な制御下にあります。

mount コマンドにアクセスポイントオプションを追加して /data アクセスポイントをマウントします。

$ sudo mount -t efs -o tls,accesspoint=fsap-0204ce67a2208742e fs-d1188b58 /mnt/shared

ルートとしては行っていないので、ファイルを作成できるようになりました。ただし、アクセスポイントのユーザーとグループ ID を自動的に使用しています。

$ sudo touch /mnt/shared/datafile
$ ls -la /mnt/shared/datafile
-rw-r--r-- 1 1001 1001 0 Jan  8 09:58 /mnt/shared/datafile

アクセスポイントを指定せずに、ファイルシステムを再度マウントします。アクセスポイントの構成を考慮すると、予想どおり、データファイル/data ディレクトリに作成されたことがわかります。アクセスポイントを使用するとき、ルートまたは EFS ファイルシステムの他のディレクトリにあるファイルにアクセスできませんでした。

$ sudo mount -t efs -o tls /mnt/shared/
$ ls -la /mnt/shared/data/datafile 
-rw-r--r-- 1 1001 1001 0 Jan  8 09:58 /mnt/shared/data/datafile

アクセスポイントで IAM 認証を使用するには、iam オプションを追加します。

$ sudo mount -t efs -o iam,tls,accesspoint=fsap-0204ce67a2208742e fs-d1188b58 /mnt/shared

特定のアクセスポイントのみを使用するように IAM ロールを制限し、AccessPointArn条件をポリシーに追加できます。

"Condition": {
    "StringEquals": {
        "elasticfilesystem:AccessPointArn" : "arn:aws:elasticfilesystem:us-east-2:123412341234:access-point/fsap-0204ce67a2208742e"
    }
}

IAM 認証と EFS アクセスポイントを一緒に使用すると、すべてのアプリケーションが適切なオペレーティングシステムユーザーとグループに自動的に割り当てられ、オプションで特定のディレクトリへのアクセスが制限されます。また、転送中の暗号化が強制され、ファイルシステムへの読み取り専用アクセス権が付与されるため、コンテナベースのアーキテクチャとマルチテナントアプリケーションのデータを安全かつ簡単に共有できます。

今すぐ利用可能です
AWS リージョン表で説明されているように、NFS クライアントと EFS アクセスポイントの IAM 認証は、EFS が提供されているすべてのリージョンで利用できます。それらを使用するために追加費用はかかりません。EFS と IAM の使用およびアクセスポイントの詳細については、ドキュメントをご覧ください。

データと設定を共有するスケーラブルなアーキテクチャを簡単に作成できるようになりました。皆さんがこの新機能をどのように活用するか、ぜひ教えてください。

Danilo