BLOG

Amazon EFS 신규 기능 출시… IAM 인증 및 액세스 포인트
작성일: 2020-02-20

어플리케이션을 build 또는 migration할 때, 우리는 종종 컴퓨터 노드의 데이터를 공유해야 할 일이 생깁니다. AWS는 다른 AWS서비스에서부터 온프레미스 리소스까지 완전 관리되는NFS(Network File System)를 제공하고 있고, 많은 애플리케이션은 파일 API와 Amazon EFS(Elastic File System)를 사용하기 때문에 AWS에서 이러한 애플리케이션을 쉽게 사용할 수 있습니다.

 

EFS는 0부터 페타 바이트로 바로 확장되므로 파일을 추가하거나 삭제할 때 자동으로 용량을 공급하여 관리할 필요가 없습니다. EFS를 사용하면 3개의 Availability Zones에서 강력한 파일 시스템의 일관성을 얻을 수 있습니다. EFS performance 는 필요한 데이터 양과 처리량을 공급할 수 있는 만큼 확장됩니다.

 

지난해 EFS 팀은 EFS 표준에 비해 스토리지 가격이 최대 92% 낮은 EFS(Increquent Access) 스토리지 클래스의 도입으로 비용 최적화에 주력했습니다. 따라서 특정 기간 동안 액세스하지 않은 파일을 EFS IA로 이동하도록 라이프사이클 관리 정책을 설정하여 비용 절감을 빠르게 시작할 수 있습니다.

 

오늘은 EFS의 신규 기능인 액세스 관리 및 데이터 세트 공유하는 작업을 단순화하는 법과 EFS파일 시스템을 보호하는 법, 이렇게 두 가지 기능에 대해 소개 드리겠습니다.

 

  • NFS Clients에 대한 IAM 인증 및 권한 부여: 클라이언트를 식별하고 IAM 정책을 사용하여 클라이언트의 사용 권한을 관리합니다.
  • EFS 액세스 지점: 운영체제 사용자와 그룹의 사용을 강제하고 선택적으로 파일시스템의 디렉토리 액세스를 제한합니다.

 

IAM 사용 권한 부여

EFS console에서, EFS 파일 시스템을 생성하거나 업데이트 할 때, 파일 시스템 정책을 사용할 수 있습니다. 이것은 Amazon Simple Storage Service (S3)의 버킷 정책과 유사한 IAM 리소스 정책이며, 루트 액세스 비활성화, 읽기전용 액세스 요청 또는 모든 클라이언트에 대해 in-transit 암호화를 실행하는데 사용할 수 있습니다.

 

IAM 사용자, 그룹 또는 역할에서 기본 권한을 무시할 수 있습니다. 이러한 새로운 기능은 보안 그룹을 사용하여 EFS의 현재 네트워크 기반 액세스에서 실행됩니다.

 

옵션 중에 루트 액세스 비활성화 버튼을 기본값으로 설정하고, Set Policy 버튼을 클릭하십시오. 그 후 JSON 탭을 선택하십시오. 예를 들어 다른 AWS 계정 또는 특정한 IAM role에 권한을 부여하듯이 설정에 따라 생성된 정책이나 또는 생성된 고급 정책 생성할 수 있습니다.

 

다음 행동은 NFS 클라이언트에 대한 액세스 권한을 관리하기 위해 IAM 정책에서 사용될 수 있는 작업입니다.

  • ClientMount읽기 전용으로 된 파일에 마운트 권한 부여
  • ClientWrite파일 시스템에 쓸 수 있도록 하기 위한 목적
  • ClientRootAccess 루트로 파일에 액세스 하기 위한 목적

 

JSON 정책을 확인해 주십시오. 마운트와 읽기(ClientMount)가 가능한 파일 시스템을 확인할 수 있습니다. 그리고 시스템에 쓸 수(ClientWrite)도 있습니다. 하지만 옵션에서 루트 액세스를 비활성화 함으로 인하여 ClientRootAccess 에서 권한이 없습니다.

 

비슷한 경우로 IAM 사용자 또는 역할에 정책을 연결하여 특정한 권한을 부여 할 수 있습니다.

 

예를 들어 아래의 정책을 사용하여 파일 시스템(루트 액세스 포함)에 대한 전체 액세스 권한을 부여하는 IAM role을 생성할 수 있습니다.

{

“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 Elastic Compute Cloud (EC2)와 같은 Amazon Virtual Private Cloud 에서 Amazon Linux 2를 사용하고 보안 그룹에 연결할 수 있는 EPS 파일 시스템을 시작하십시오. EC2 인스턴스는 방금 전에 새로 생성된 IAM 역할을 사용하고 있습니다.

 

오픈 소스인 efs-utils은 IAM 인증, in-transit 암호화, 또는 두 개 모두를 사용하여 클라이언트를 연결해야 합니다. 일반적으로 Amazon Linux 2에서 yum을 사용하여 efs-utils을 설치 하지만 새로운 버전이 계속 출시되어 저장소(this repository) 에 있는 패키지를 빌드로 하는 가이드를 따르십시오. 업데이트된 패키지를 사용할 수 있을 때 블로그에 게시글도 업데이트 하겠습니다.

 

EFS 파일 시스템을 마운트 하기 위해서는 mount 명령어를 사용해야 합니다. In-transit 암호화를 극대화 하기 위하여 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

 

이번에는 IAM 인증 추가를 사용하여 iam 옵션을 mount명령어에 추가하십시오.

(tls을 작업에 적용하기에는 IAM 인증을 필요로 합니다.)

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

 

Mount 옵션을 사용할 때는, 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 역할을 사용하여 루트에 액세스 하도록 하겠습니다. 다른 일반적인 방법으로는

In-transit 암호화 (aws:SecureTransport 을 condition key 사용) 또는 쓰기 또는 읽기만 가능한 파일에 대하여 액세스 할 수 있도록 역할을 부여하는 것입니다.

 

파일 시스템에 대한 클라이언트 액세스를 감사하기 위하여 AWS CloudTrail 에서 EFS IAM 권한을 확인하고 체크합니다. 예를 들어, 클라이언트가 파일 시스템을 마운트하면 CloudTrail console 에서 NewClientConnection이벤트를 확인할 수 있을 것입니다.

EFS 액세스 포인트 사용

EFS 액세스 포인트를 사용함으로써 파일 시스템에 액세스 할 때, NFS 환경에 대한 어플리케이션 액세스, 특정한 POSIX 사용자와 그룹을 지정하고 파일 시스템 내의 디렉토리를 제한하여 NFS environment에 대한 액세스를 쉽게 관리할 수 있습니다.

 

EFS 액세스 포인트를 사용하여 얻을 수 있는 장점은 다음과 같습니다.

  • 개발자가 자체적으로 컨테이너를 빌드 및 배포할 때의 컨테이너 기반 environment (테이너 저장소 EFS 사용에 대한 자세한 설명은this blog post를 참고하세요.)
  • Production data에 읽기 전용 액세스가 필요한 Data science 어플리케이션
  • 다른 계정과 함께 파일 시스템의 특정 디렉토리 공유

EFS 콘솔에서 각각의 다른 POSIX 사용자 및 그룹을 사용하여 파일 시스템에 대한 두 가지의 액세스 포인트를 만드십시오.

  • /data – 여러 명의 클라이언트 들이 읽고 업데이트 해야 하는 일부 데이터를 공유하고 있습니다.
  • /config – /data 액세스 포인트를 사용하여 클라이언트에 의해 업데이트 되면 안 되는 일부 파일들을 공유합니다.

(이미지 4)

두 개의 액세스에 모두 755 파일 권한을 사용하였습니다. 다시 말해서 모든 사람에게 읽을 수 있는 권한과 실행 액세스 권한을 부여하고 쓰기 권한은 디렉토리 소유자에게만 부여하였습니다.

 

여기에서의 권한은 디렉토리를 생성할 때 사용됩니다. 디렉토리 내에서 권한은 사용자가 모두 컨트롤 할 수 있습니다.

mount 옵션 명령어에 accesspoint 를 /data 액세스 포인트에 추가하여 액세스 포인트를 mount 합니다.

$ 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 디렉토리에 datafile 이 생성된 것을 확인할 수 있습니다. 액세스 포인트를 사용할 때는 루트 또는 다른 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

 

특정 액세스 포인트만 사용하도록 Condition 을 AccessPointArn에 추가하여 IAM 역할을 제한할 수 있습니다.

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

}

IAM 인증 그리고 EFS 액세스 포인트를 함께 사용하여 컨테이너 기반 아키텍쳐 및 다multi-teanant-어플리케이션에 대한 데이터 공유를 간소화 할 수 있습니다. 그 이유는 모든 어플리케이션은 자동적으로 올바른 운영체제 시스템을 유저와 그룹에게 자동으로 할당 받기 때문에 특정한 디렉토리의 선택적 제한 액세스, in-transit 암호화 적용 또는 파일 시스템에 대한 읽기 전용 권한을 부여하기 때문입니다.

 

정식 출시

AWS Region Table 에서 설명된 바와 같이 NFS 클라이언트 및 EFS 액세스 포인트에 대한 IAM 인증은 EFS가 제공하는 모든 리전에서 사용 가능합니다. EFS를 통한 IAM 사용법(using EFS with IAM)과 액세스포인트(access points)에 관한 자세한 내용은 각 링크가 걸린 페이지를 확인해 주십시오.

 

이로써 데이터 및 구성을 공유하는 확장 가능한 아키텍쳐 생성이 더 쉬워졌습니다. 이 새로운 기능을 잘 활용하셔서 더욱 편리하고 빠르게 서비스를 이용하세요!

 


원문 URL: https://aws.amazon.com/ko/blogs/aws/new-for-amazon-efs-iam-authorization-and-access-points/

 

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 개제하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달드리도록 하겠습니다.