システムポリシーを使用して EFS ファイルシステムへのアクセスを制御するにはどうすればよいですか?
AWS アカウント間で自分の Amazon Elastic File System (Amazon EFS) ファイルシステムにアクセスして、ファイルを共有できるようにしたいと考えています。ネットワークファイルシステム (NFS) クライアントと EFS アクセスポイントに対して AWS Identity and Access Management (IAM) 認証を使用することを望んでいます。
簡単な説明
Amazon EFS ファイルシステムにアクセスするには、NFS クライアントとアクセスポイントに対して IAM 認証を使用します。EFS ファイルシステムをマウントするには、Amazon EFS マウントヘルパーを使用します。デフォルトでは、マウントヘルパーは DNS を使用してマウントターゲットの IP アドレスを解決します。別のアカウントから、または Amazon Virtual Private Cloud (Amazon VPC) からマウントする場合は、Amazon EFS マウントターゲットの IP アドレスを手動で解決する必要があります。
前提条件:
- NFS クライアント と EFS ファイルシステムの VPC を、VPC ピアリング接続または VPC Transit Gateway のいずれかで接続します。この接続により、同じアカウントまたは異なるアカウントの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスが、異なる VPC 内の EFS ファイルシステムにアクセスできるようになります。
- IAM ロールに、Amazon EFS および NFS クライアントリソースの両方におけるコンソールアクセス権または読み取りアクセス権を付与します。
- Amazon EFS クライアントと botocore パッケージを NFS クライアントにインストールします。
注: クロスアカウントのシナリオでは、通常の NFS コマンドを実行できないため、botocore パッケージと Amazon EFS クライアントが必要です。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
クロスアカウント EFS ファイルシステムに対するアクセス許可とマウント権限の付与
クロスアカウント EFS ファイルシステムに対するアクセス許可とマウント権限を付与するには、IAM ポリシーにステートメントを追加するか、ロールを引き受けるために AWS CLI を使用します。
ポリシーステートメントを追加する
IAM ポリシーに次のポリシーステートメントを追加します。
{ "Sid": "EfsPermissions", "Effect": "Allow", "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite", "elasticfilesystem:ClientRootAccess" ], "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id" }
注: 前述のサンプルステートメントでは、IAM ロールが EFS ファイルシステムへのマウント、書き込み、およびルートアクセス権を持つことができます。NFS クライアントが EC2 インスタンスの場合は、IAM ロールをインスタンスにアタッチしてください。
AWS CLI を使用する
AWS CLI を使用してロールを引き受ける方法については、「AWS CLI を使用して IAM ロールを引き受けるにはどうすればよいですか?」を参照してください。
AWS CLI では別の VPC にある EFS ファイルシステムの DNS を解決できないため、クライアントの正しいマウントターゲットの IP アドレスを確認する必要があります。その後に、クライアントを設定します。EFS ファイルシステムをマウントするには、NFS クライアントと同じアベイラビリティーゾーン内にあるマウントターゲットの IP アドレスを使用します。アベイラビリティーゾーンの名前マッピングは、アカウントごとに異なる場合があります。EFS ファイルシステムを別のアカウントにマウントする場合、NFS クライアントとマウントターゲットは同じアベイラビリティーゾーン内にある必要があります。
EC2 インスタンスのアベイラビリティーゾーンを確認する
EC2 インスタンスのアベイラビリティーゾーンを確認するには、Amazon EC2 コンソールまたは AWS CLI のいずれかを使用します。
Amazon EC2 コンソールを使用する
次の手順を実行します。
- Amazon EC2 コンソールを開きます。
- [インスタンス] を選択します。
- [EC2-インスタンス ID] を選択し、[ネットワーク] を選択します。
- [ネットワーキングの詳細] で、アベイラビリティーゾーンを探します。
AWS CLI を使用する
Amazon EC2 に対する十分な読み取り権限がある IAM エンティティから、describe-availability-zone コマンドを実行します。
$ aws ec2 describe-availability-zones --zone-name `curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`{ "AvailabilityZones": [ { "State": "available", "ZoneName": "us-east-2b", "Messages": [], "ZoneId": "use2-az2", "RegionName": "us-east-2" } ] }
ローカルアベイラビリティーゾーンのマウントターゲット IP アドレスを確認する
ローカルアベイラビリティーゾーンのマウントターゲット IP アドレスを確認するには、Amazon EFS コンソールまたは AWS CLI のいずれかを使用します。
Amazon EFS コンソールを使用する
次の手順を実行します。
- Amazon EFS コンソールを開きます。
- [ファイルシステム] を選択します。
- [EFS ファイルシステム ID] を選択します。
- [ネットワーク] で、アベイラビリティーゾーンの IP アドレスをメモします。
AWS CLI を使用する
次の手順を実行します。
-
Amazon EC2 に対する十分な読み取り権限がある IAM エンティティから、describe-mount-targets コマンドを実行します。
$ aws efs describe-mount-targets --file-system-id fs-cee4feb7{ "MountTargets": [ { "MountTargetId": "fsmt-a9c3a1d0", "AvailabilityZoneId": "use2-az2", "NetworkInterfaceId": "eni-048c09a306023eeec", "AvailabilityZoneName": "us-east-2b", "FileSystemId": "fs-cee4feb7", "LifeCycleState": "available", "SubnetId": "subnet-06eb0da37ee82a64f", "OwnerId": "958322738406", "IpAddress": "10.0.2.153" }, ... { "MountTargetId": "fsmt-b7c3a1ce", "AvailabilityZoneId": "use2-az3", "NetworkInterfaceId": "eni-0edb579d21ed39261", "AvailabilityZoneName": "us-east-2c", "FileSystemId": "fs-cee4feb7", "LifeCycleState": "available", "SubnetId": "subnet-0ee85556822c441af", "OwnerId": "958322738406", "IpAddress": "10.0.3.107" } ] }
-
前述の出力から、インスタンスのアベイラビリティーゾーン内にあるマウントターゲットに対応する IP アドレスをメモします。
ホストエントリを /etc/hosts ファイルに追加して EFS ファイルシステムをマウントする
次の手順を実行します。
- 次のコマンドを実行して、NFS クライアントの /etc/hosts ファイルに hosts エントリを追加します。
注: 前述のコマンドでは、DNS 名の形式は mount-target-IP-Address file-system-ID.efs.region.amazonaws.com です。サンプル IP アドレスをマウントターゲットの IP アドレスに置き換えてください。$ echo "10.0.2.153 fs-cee4feb7.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
- マウントヘルパーを使用して EFS ファイルシステムをマウントします。
ファイルシステムのマウント中に問題が発生した場合は、「Troubleshooting mount issues」を参照してください。
関連情報
関連するコンテンツ
- 質問済み 2年前lg...
- AWS公式更新しました 7ヶ月前
- AWS公式更新しました 1年前
- AWS公式更新しました 4年前