시스템 정책을 사용하여 EFS 파일 시스템에 대한 액세스를 제어하려면 어떻게 해야 하나요?

4분 분량
0

파일을 공유할 수 있도록 여러 계정에서 Amazon Elastic File System(Amazon EFS) 파일 시스템에 액세스하려고 합니다. NFS 클라이언트용 AWS Identity and Access Management(IAM) 권한 부여와 EFS 액세스 포인트를 사용하여 이 작업을 수행하려면 어떻게 해야 하나요?

간략한 설명

Amazon EFS 탑재 헬퍼와 함께 NFS 클라이언트용 IAM 권한 부여 및 액세스 포인트를 사용하여 Amazon EFS 파일 시스템을 탑재할 수 있습니다. 기본적으로 탑재 헬퍼는 DNS를 사용하여 탑재 대상의 IP 주소를 확인합니다. 따라서 다른 계정이나 Amazon Virtual Private Cloud(VPC)에서 탑재하는 경우 Amazon EFS 탑재 대상 IP를 수동으로 확인해야 합니다.

사전 요구 사항

  1. NFS 클라이언트와 EFS 파일 시스템의 VPC는 VPC 피어링 연결 또는 VPC Transit Gateway를 사용하여 연결됩니다. 이를 통해 동일한 계정이나 다른 계정의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 다른 VPC에 있는 EFS 파일 시스템에 액세스할 수 있습니다.
  2. IAM 역할(인스턴스 역할 또는 기타 역할)에는 Amazon EFS 리소스와 NFS 클라이언트 리소스 모두에 대한 콘솔 또는 읽기 액세스 권한이 있습니다.
  3. Amazon EFS 클라이언트botocore 패키지는 NFS 클라이언트에 설치됩니다.

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS Command Line Interface(AWS CLI)를 사용하고 있는지 확인하세요.

이 예시에서 EFS 파일 시스템은 계정 A에 있고 NFS 클라이언트는 계정 B에 있습니다.    

1.    크로스 계정 EFS 파일 시스템에 액세스하고 이를 탑재하기 위해 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 역할을 인스턴스에 연결합니다.

2.    또는 AWS CLI를 사용하여 역할을 수임할 수 있습니다. AWS CLI는 다른 VPC에 있는 EFS 파일 시스템의 DNS를 확인할 수 없습니다. 따라서 먼저 클라이언트에 적합한 탑재 대상 IP를 확인합니다. 그런 다음 해당 IP를 사용하여 EFS 파일 시스템을 탑재하도록 클라이언트를 구성합니다.

고가용성을 보장하기 위해 항상 NFS 클라이언트와 동일한 가용 영역에 있는 탑재 대상 IP 주소를 사용합니다. AZ 이름 매핑은 계정마다 다를 수 있습니다. 다른 계정에 EFS 파일 시스템을 탑재하고 있기 때문에 NFS 클라이언트와 탑재 대상이 동일한 AZ ID에 속해야 합니다.

EC2 인스턴스의 AZ를 확인하기 위해 다음 방법 중 하나를 사용하여 DescribeAvailabilityZone API를 호출합니다.

  • Amazon EC2 콘솔에 로그인하고 Instances(인스턴스)를 선택합니다. EC2-Instance-ID(EC2-인스턴스-ID)를 선택한 다음 Networking(네트워킹)을 선택합니다. Networking details(네트워킹 세부 정보)에서 가용 영역을 찾을 수 있습니다.

또는

  • Amazon EC2에 대한 충분한 읽기 권한이 있는 IAM 엔터티에서 다음과 유사한 명령을 실행합니다. 그러면 유사한 출력이 표시됩니다.
$ 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"
        }
    ]
}

3.    로컬 AZ의 탑재 대상 IP를 확인하기 위해 다음 방법 중 하나를 사용하여 DescribeMountTargets API를 호출합니다.

  • Amazon EFS 콘솔에 로그인하고 File Systems(파일 시스템)를 선택합니다. EFS-File-System-ID(EFS-파일-시스템-ID)를 선택한 다음 Network(네트워크)에서 가용 영역의 IP 주소를 기록해 둡니다.

또는

  • Amazon EC2에 대한 충분한 읽기 권한이 있는 IAM 엔터티에서 다음과 유사한 명령을 실행합니다. 그러면 유사한 출력이 표시됩니다.
$ 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"
        }
    ]
}

4.    표시되는 출력에서 EC2 인스턴스의 AZ에 있는 탑재 대상에 해당하는 IP 주소를 기록해 둡니다.

5.    해당 IP 주소를 사용하고 NFS 클라이언트의 /etc/hosts 파일에 호스트 항목을 추가합니다. DNS 이름의 형식은 mount-target-IP-Address file-system-ID.efs.region.amazonaws.com입니다.

다음 명령 예시를 참조하세요.

$ echo "10.0.2.153 fs-cee4feb7.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts

6.    탑재 헬퍼를 사용하여 EFS 파일 시스템을 탑재합니다.

참고: 크로스 계정 시나리오에서는 일반적인 NFS 명령을 사용할 수 없으므로 botocore 및 Amazon EFS 클라이언트가 필요합니다.

이들 단계를 수행하면 EFS 파일 시스템을 탑재하고 사용하기 시작할 수 있습니다. 오류가 발생하는 경우 문제 해결 안내서를 참조하세요.


관련 정보

파일 시스템 정책 생성

AWS 공식
AWS 공식업데이트됨 일 년 전