Amazon EFS – IAM 권한 부여 및 액세스 지점 기능 출시
애플리케이션을 구축하거나 마이그레이션할 때 종종 여러 컴퓨팅 노드에서 데이터를 공유해야 하곤 합니다. 많은 애플리케이션이 파일 API를 사용합니다. Amazon Elastic File System(EFS)에서는 다른 AWS 서비스 및 온프레미스 리소스에서 액세스할 수 있는 완전관리형 NFS(네트워크 파일 시스템)를 제공하여 AWS에서 이러한 애플리케이션을 손쉽게 사용할 수 있습니다.
EFS는 수요에 따라 중단 없이 0에서 페타바이트까지 확장 가능하며, 용량을 프로비저닝 및 관리할 필요 없이 파일을 추가하고 제거할 때 자동으로 확장 및 축소할 수 있습니다. 이를 사용하면 3개의 가용 영역에서 강력한 파일 시스템 일관성을 유지할 수 있습니다. EFS 성능은 필요한 처리량을 프로비저닝하는 옵션을 통해 저장된 데이터 크기를 조정합니다.
작년 EFS 팀은 EFS IA(Infrequent Access) 스토리지 클래스 도입으로 EFS Standard에 비해 최대 92% 저렴한 스토리지 요금을 제시하며 비용을 최적화하는 데 초점을 맞추었습니다. 특정 일수 동안 액세스하지 않은 파일을 EFS IA로 이동하도록 수명 주기 관리 정책을 설정하면 빠르게 비용을 줄이기 시작할 수 있습니다.
오늘, 액세스 관리, 데이터 세트 공유 및 EFS 파일 시스템 보호를 단순화하는 두 가지 새로운 기능을 소개하고자 합니다.
- NFS 클라이언트에 대한 IAM 인증 및 권한 부여: 클라이언트를 식별하고 IAM 정책을 사용하여 클라이언트 측 권한을 관리합니다.
- EFS 액세스 지점: 선택적으로 파일 시스템의 디렉터리에 대한 액세스를 제한하여 운영 체제 사용자 및 그룹의 사용을 제어합니다.
IAM 인증 및 권한 부여 사용
EFS 콘솔에서 EFS 파일 시스템을 생성하거나 업데이트할 때 이제는 파일 시스템 정책을 설정할 수 있습니다. 이를 IAM 리소스 정책이라고 하며, Amazon Simple Storage Service(S3)의 버킷 정책과도 비슷합니다. 예를 들어, 이 정책은 루트 액세스를 비활성화하거나 읽기 전용 액세스를 적용하거나 모든 클라이언트에 대해 전송 중 암호화를 적용하는 데 사용할 수 있습니다.
IAM 사용자, 그룹 또는 역할이 사용하는 정책과 같이 자격 증명 기반 정책은 이러한 기본 권한을 재정의할 수 있습니다. 이 새 기능은 보안 그룹을 사용하여 EFS의 현재 네트워크 기반 액세스보다 우선적으로 작동합니다.
기본적으로 루트 액세스를 비활성화하는 옵션을 선택하고 [정책 설정]을 클릭하고 [JSON] 탭을 선택합니다. 여기에서 내 설정에 기반하여 생성한 정책을 검토하거나 추가 고급 정책(예: 다른 AWS 계정이나 특정 IAM 역할에 권한 부여)을 생성할 수 있습니다.
다음 작업은 NFS 클라이언트에 대한 액세스 권한을 관리하기 위해 IAM 정책에서 사용할 수 있습니다.
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"
}
]
}
Amazon Linux 2 및 파일 시스템에 연결할 수 있는 보안 그룹을 사용하여 EFS 파일 시스템과 동일한 Amazon Virtual Private Cloud에서 Amazon Elastic Compute Cloud(EC2)를 시작합니다. EC2 인스턴스는 방금 생성한 IAM 역할을 사용합니다.
IAM 인증, 전송 중 암호화 또는 둘 다를 사용하여 클라이언트에 연결하려면 오픈 소스 efs-utils
가 필요합니다. 일반적으로 Amazon Linux 2에서는 yum
을 사용하여 efs-utils
를 설치하지만, 새 버전이 아직 배포 중이므로, 지침에 따라 이 리포지토리의 소스에서 패키지를 구축합니다. 업데이트된 패키지가 제공되면 이 블로그 게시물을 업데이트하겠습니다.
EFS 파일 시스템을 마운트하기 위해 mount
명령을 사용합니다. 전송 중 암호화를 활용하기 위해 tls
옵션을 추가합니다. 여기에서는 IAM 인증을 사용하지 않으므로 파일 시스템 정책에서 “*” 보안 주체에 대해 지정한 권한이 이 연결에 적용됩니다.
내 파일 시스템 정책에서는 기본적으로 루트 액세스를 비활성화하므로, 새 파일을 루트로 생성할 수 없습니다.
이제 mount
명령에 iam
옵션을 추가하여 IAM 인증을 사용합니다(IAM 인증이 작동하려면 tls
가 필요함).
이 마운트 옵션을 사용하는 경우 EC2 인스턴스 프로파일의 IAM 역할이 루트 액세스를 포함하여 해당 역할에 연결된 권한과 함께 연결에 사용됩니다.
여기에서는 IAM 역할을 사용하여 루트 액세스를 보유합니다. 다른 공통 사용 사례로는, aws:SecureTransport
조건 키를 사용하여 전송 중 암호화를 적용하거나 쓰기 또는 읽기 전용 액세스가 필요한 클라이언트에 대해 다른 역할을 생성할 수 있습니다.
EFS IAM 권한 검사는 AWS CloudTrail에서 파일 시스템에 대한 클라이언트 액세스를 감사하기 위해 기록됩니다. 예를 들어, 클라이언트가 파일 시스템을 마운트하면 NewClientConnection
이벤트가 내 CloudTrail 콘솔에 표시됩니다.
EFS 액세스 지점 사용
EFS 액세스 지점을 사용하면 파일 시스템에 액세스할 때 사용할 POSIX 사용자 및 그룹을 지정하고 파일 시스템 내 디렉터리에 대한 액세스를 제한하여 NFS 환경에 대한 애플리케이션 액세스를 쉽게 관리할 수 있습니다.
다음은 EFS 액세스 지점을 활용할 수 있는 사용 사례입니다.
- 개발자가 자체 컨테이너를 구축 및 배포하는 컨테이너 기반 환경(컨테이너 스토리지에 대해 EFS를 사용하는 사례도 이 블로그 게시물에서 확인할 수 있음).
- 프로덕션 데이터에 대한 읽기 전용 액세스만 필요한 데이터 과학 애플리케이션.
- 파일 시스템의 특정 디렉터리를 다른 AWS 계정과 공유.
EFS 콘솔에서는 각각 다른 POSIX 사용자 및 그룹을 사용하여 파일 시스템에 대한 두 개의 액세스 지점을 생성합니다.
/data
– 여러 클라이언트가 읽고 업데이트해야 하는 일부 데이터를 공유하는 경우./config
–/data
액세스 지점을 사용하여 클라이언트가 업데이트해서는 안 되는 일부 구성 파일을 공유하는 경우.
두 액세스 지점에 대해 파일 권한 755
를 사용합니다. 즉, 읽기 및 실행 액세스 권한은 모든 사용자에게 부여하고, 쓰기 권한은 디렉터리의 소유자에게만 부여합니다. 여기에서는 디렉터리를 생성할 때 권한이 사용됩니다. 디렉터리 내에서 권한은 사용자가 완벽하게 제어합니다.
mount
명령에 accesspoint
옵션을 추가하여 :/data
액세스 지점을 마운트합니다.
이제 파일을 생성할 수 있습니다. 루트로는 수행할 수 없지만, 액세스 지점의 사용자 및 그룹 ID를 자동으로 사용하기 때문입니다.
액세스 지점을 지정하지 않고 다시 파일 시스템을 마운트합니다. 액세스 지점 구성을 고려하며 예상대로 datafile
이 /data
디렉터리에서 생성됩니다. 액세스 지점을 사용하면 EFS 파일 시스템의 루트나 다른 디렉터리에 있는 파일에 액세스할 수 없었습니다.
액세스 지점에서 IAM 인증을 사용하기 위해 iam
옵션을 추가합니다.
정책에 AccessPointArn
의 Condition
을 추가하여 특정 액세스 지점만 사용하도록 IAM 역할을 제한할 수 있습니다.
"Condition": {
"StringEquals": {
"elasticfilesystem:AccessPointArn" : "arn:aws:elasticfilesystem:us-east-2:123412341234:access-point/fsap-0204ce67a2208742e"
}
}
IAM 인증 및 EFS 액세스 지점을 함께 사용하면 컨테이너 기반 아키텍처 및 멀티 테넌트 애플리케이션에 대한 안전한 데이터 공유를 단순화합니다. 모든 애플리케이션이 선택적으로 특정 디렉터리에 대한 액세스를 제한하거나 전송 중 암호화를 적용하거나 파일 시스템에 대한 읽기 전용 액세스만 제공하는 방식으로 올바른 운영 체제 사용자 및 그룹을 자동으로 지정할 수 있기 때문입니다.
정식 출시
NFS 클라이언트에 대한 IAM 권한 부여 및 EFS 액세스 지점은 AWS 리전 표에서 설명한 대로, EFS를 제공하는 모든 리전에서 사용할 수 있습니다. 이 기능을 사용할 때에는 추가 요금이 부과되지 않습니다. 설명서에서 IAM에서 EFS 사용 및 액세스 지점에 대한 자세한 내용을 확인할 수 있습니다.
이제 데이터 및 구성을 공유하는 확장 가능한 아키텍처를 보다 쉽게 생성할 수 있습니다. 앞으로 이 새로운 기능을 어떻게 사용할 것인지에 대해 경험을 공유해주세요!
— Danilo