NFS(Network File System) 수준 사용자, 그룹 및 권한 사용 - Amazon Elastic File System

NFS(Network File System) 수준 사용자, 그룹 및 권한 사용

파일 시스템을 만들면 기본적으로 루트 사용자(UID 0)에게만 읽기, 쓰기 및 실행 권한이 있습니다. 다른 사용자가 파일 시스템을 수정할 수 있게 하려면 루트 사용자가 다른 사용자에게 액세스 권한을 명시적으로 부여해야 합니다. 액세스 포인트를 사용하여 루트가 아닌 사용자가 쓰기 가능한 디렉터리를 자동으로 생성할 수 있습니다. 자세한 내용은 Amazon EFS 액세스 포인트 작업 단원을 참조하십시오.

Amazon EFS 파일 시스템 객체에는 연결된 Unix 스타일 모드가 있습니다. 이 모드 값은 해당 객체에 대한 작업을 수행할 수 있는 권한을 정의합니다. Unix 스타일 시스템에 익숙한 사용자는 이러한 권한과 관련된 Amazon EFS 작동 방식을 쉽게 이해할 수 있습니다.

또한 Unix 스타일 시스템에서 사용자와 그룹은 Amazon EFS가 파일 소유권을 나타내는 데 사용하는 숫자 식별자에 매핑됩니다 Amazon EFS의 경우 파일 시스템 객체(파일, 디렉터리 등)는 단일 소유자 및 단일 그룹이 소유합니다. Amazon EFS는 사용자가 파일 시스템 객체에 액세스하려고 할 때 매핑된 숫자 ID를 사용하여 권한을 확인합니다.

참고

NFS 프로토콜은 사용자당 최대 16개의 그룹 ID(GID)를 지원하며 추가 GID는 NFS 클라이언트 요청에서 잘립니다. 자세한 내용은 NFS 파일 시스템에서 허용된 파일에 대한 액세스가 거부되었습니다. 단원을 참조하십시오.

다음에서는 권한의 예제와 Amazon EFS에 대한 NFS 권한 고려 사항 관련 토론을 확인할 수 있습니다.

예: Amazon EFS 파일 시스템 사용 사례 및 권한

VPC에서 Amazon EFS 파일 시스템과 이 파일 시스템의 탑재 대상을 만들면 Amazon EC2 인스턴스에서 로컬로 원격 파일 시스템을 탑재할 수 있습니다. mount 명령은 파일 시스템에서 디렉터리를 얼마든지 탑재할 수 있습니다. 그러나 파일 시스템을 처음으로 만든 경우 /에는 루트 디렉터리가 하나뿐입니다. 루트 사용자 및 루트 그룹이 탑재된 디렉터리를 소유합니다.

다음 mount 명령은 /efs-mount-point 로컬 디렉터리에서 파일 시스템 DNS 이름으로 식별되는 Amazon EFS 파일 시스템의 루트 디렉터리를 탑재합니다.

sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.aws-region.amazonaws.com:/ efs-mount-point

초기 권한 모드에서는 다음과 같이 허용됩니다.

  • 소유자 루트에 대한 read-write-execute 권한

  • 그룹 루트에 대한 read-execute 권한

  • 다른 사용자에게 read-execute 권한이 허용됨

루트 사용자만 이 디렉터리를 수정할 수 있습니다. 또한 루트 사용자는 다른 사용자에게 이 디렉터리에 쓸 수 있는 권한을 부여할 수도 있습니다. 예:

  • 쓰기 가능한 사용자별 하위 디렉터리를 만듭니다. 단계별 지침은 자습서: 쓰기 가능한 사용자별 하위 디렉터리 생성단원을 참조하세요.

  • 사용자가 Amazon EFS 파일 시스템 루트에 쓸 수 있도록 합니다. 루트 권한이 있는 사용자는 다른 사용자에게 파일 시스템에 대한 액세스 권한을 부여할 수 있습니다.

    • Amazon EFS 파일 시스템 소유권을 루트가 아닌 사용자 및 그룹에게로 변경하려면 다음 명령을 사용합니다.

      $ sudo chown user:group /EFSroot
    • 파일 시스템의 권한을 더욱 허용적으로 변경하려면 다음 명령을 사용합니다.

      $ sudo chmod 777 /EFSroot

      이 명령은 파일 시스템이 탑재된 모든 EC2 인스턴스에 대한 읽기-쓰기-실행 권한을 사용자 모두에게 부여합니다.

파일 시스템 내의 파일 및 디렉터리에 대한 사용자 및 그룹 ID 권한

Amazon EFS 파일 시스템의 파일 및 디렉터리는 사용자 ID 및 그룹 ID를 기반으로 표준 Unix 스타일의 읽기, 쓰기 및 실행 권한을 지원합니다. NFS 클라이언트가 액세스 포인트를 사용하지 않고 EFS 파일 시스템을 탑재하면 클라이언트에서 제공한 사용자 ID와 그룹 ID를 신뢰할 수 있게 됩니다. EFS 액세스 포인트를 사용하여 NFS 클라이언트에서 사용하는 사용자 ID 및 그룹 ID를 재정의할 수 있습니다. 사용자가 파일 및 디렉터리에 액세스하려고 하면 Amazon EFS는 사용자 ID와 그룹 ID를 검사하여 각 사용자에게 객체에 액세스할 권한이 있는지 확인합니다. 또한 Amazon EFS는 이러한 ID를 사용하여 사용자가 생성한 새 파일 및 디렉터리의 소유자 및 그룹 소유자를 나타냅니다. Amazon EFS는 사용자 또는 그룹 이름을 검사하지 않고 숫자 식별자만 사용합니다.

참고

EC2 인스턴스에서 사용자를 만드는 경우 만든 사용자에게 임의의 숫자 사용자 ID(UID) 및 그룹 ID(GID)를 할당할 수 있습니다. 숫자 사용자 ID는 Linux 시스템의 /etc/passwd 파일에서 설정합니다. 숫자 그룹 ID는 /etc/group 파일에 있습니다. 이러한 파일은 이름과 ID 간의 매핑을 정의합니다. EC2 인스턴스 외부에서 Amazon EFS는 루트 ID 0을 비롯하여 이러한 ID를 인증하지 않습니다.

사용자가 서로 다른 두 EC2 인스턴스에서 Amazon EFS 파일 시스템에 액세스하는 경우 이러한 인스턴스에서 사용자의 UID가 동일한지 혹은 다른지 여부에 따라 다음과 같이 다르게 동작할 수 있습니다.

  • 두 EC2 인스턴스에서 사용자 ID가 동일한 경우, Amazon EFS는 사용하는 EC2 인스턴스와 상관없이 해당 ID가 동일한 사용자를 나타내는 것으로 간주합니다. 따라서 어느 쪽 EC2 인스턴스에서 파일 시스템에 액세스하든 사용자 환경이 동일합니다.

  • 두 EC2 인스턴스에서 사용자 ID가 동일하지 않은 경우, Amazon EFS는 사용자를 서로 다른 사용자로 간주합니다. 서로 다른 두 EC2 인스턴스에서 Amazon EFS 파일 시스템에 액세스할 때는 사용자 환경이 동일하지 않습니다.

  • 다른 EC2 인스턴스에 있는 서로 다른 두 사용자가 ID를 공유하는 경우, Amazon EFS는 이들을 동일한 사용자로 간주합니다.

EC2 인스턴스에서 일관된 사용자 ID 매핑 관리를 고려할 수 있습니다. 사용자는 id 명령을 사용하여 자신의 숫자 ID를 확인할 수 있습니다.

$ id uid=502(joe) gid=502(joe) groups=502(joe)

ID 매퍼 끄기

운영 체제의 NFS 유틸리티에는 사용자 이름과 ID 간의 매핑을 관리하는 ID 매퍼라는 데몬이 포함되어 있습니다. Amazon Linux에서는 이 대몬(daemon)을 rpc.idmapd라고 하며, Ubuntu에서는 idmapd라고 합니다. ID 매퍼는 사용자 및 그룹 ID를 이름으로 전환하고 그 반대로도 전환합니다. 그러나 Amazon EFS에서는 숫자 ID만 처리합니다. EC2 인스턴스에서는 이 프로세스를 끄는 것이 좋습니다. Amazon Linux에서는 일반적으로 ID 매퍼가 비활성화되어 있으므로 이러한 경우에는 ID 매퍼를 활성화하지 마세요. ID 매퍼를 끄려면 다음과 같은 명령을 사용합니다.

$ service rpcidmapd status $ sudo service rpcidmapd stop

루트 스쿼싱 사용 안 함

기본적으로 EFS 파일 시스템에서는 루트 스쿼시가 비활성화됩니다. Amazon EFS는 no_root_squash를 사용하여 Linux NFS 서버처럼 동작합니다. 사용자 또는 그룹 ID가 0이면 에서는 해당 사용자를 root 사용자로 취급하고 권한 검사를 우회하여 모든 파일 시스템 객체에 대한 액세스 및 수정을 허용합니다. AWS Identity and Access Management(AWS IAM) 자격 증명 또는 리소스 정책에서 ClientRootAccess 작업에 대한 액세스를 허용하지 않는 경우 클라이언트 연결에서 루트 스쿼싱을 활성화할 수 있습니다. 루트 스쿼싱이 활성화되어 있으면 루트 사용자가 NFS 서버에 대한 권한이 제한되는 사용자로 전환됩니다.

자세한 내용은 IAM을 사용하여 파일 시스템 데이터 액세스 제어 단원을 참조하십시오.

NFS 클라이언트에 대한 IAM 권한 부여를 사용하여 루트 스쿼싱 활성화

단일 관리 워크스테이션을 제외한 모든 AWS 보안 주체의 Amazon EFS 파일 시스템에 대한 루트 액세스를 차단하도록 Amazon EFS를 구성할 수 있습니다. 이를 위해 NFS(Network File System) 클라이언트에 대한 AWS Identity and Access Management(IAM) 권한 부여를 구성합니다.

이렇게 하려면 다음과 같이 두 가지 IAM 권한 정책을 구성해야 합니다.

  • 파일 시스템에 대한 읽기 및 쓰기 액세스를 명시적으로 허용하고 루트 액세스를 암시적으로 거부하는 EFS 파일 시스템 정책을 생성합니다.

  • Amazon EC2 인스턴스 프로파일을 사용하여 파일 시스템에 대한 루트 액세스가 필요한 Amazon EC2 관리 워크스테이션에 IAM 자격 증명을 할당합니다. Amazon EC2 인스턴스 프로파일에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서인스턴스 프로파일 사용을 참조하세요.

  • 관리 워크스테이션의 IAM 역할에 AmazonElasticFileSystemClientFullAccess AWS 관리형 정책을 할당합니다. EFS의 AWS 관리형 정책에 대한 자세한 내용은 Amazon EFS의 자격 증명 및 액세스 관리 섹션을 참조하세요.

NFS 클라이언트에 대한 IAM 권한 부여를 사용하여 루트 스쿼싱을 활성화하려면 다음 절차를 따르세요.

파일 시스템에 대한 루트 액세스를 차단하려면
  1. Amazon Elastic File System 콘솔(https://console.aws.amazon.com/efs/)을 엽니다.

  2. 파일 시스템을 선택합니다.

  3. 루트 스쿼싱을 활성화할 파일 시스템을 선택합니다.

  4. 파일 시스템 세부 정보 페이지에서 파일 시스템 정책을 선택한 다음 편집을 선택합니다. 파일 시스템 정책 페이지가 나타납니다.

  5. 정책 옵션에서 기본적으로 루트 액세스 차단*을 선택합니다. 정책 JSON 객체가 정책 편집기에 나타납니다.

  6. 저장을 선택하여 파일 시스템 정책을 저장합니다.

익명이 아닌 클라이언트는 자격 증명 기반 정책을 통해 파일 시스템에 대한 루트 액세스를 얻을 수 있습니다. AmazonElasticFileSystemClientFullAccess 관리형 정책을 워크스테이션의 역할에 연결하면 IAM은 자격 증명 정책에 따라 워크스테이션에 루트 액세스 권한을 부여합니다.

관리 워크스테이션에서 루트 액세스를 활성화하려면
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. EFS-client-root-access라는 Amazon EC2의 역할을 생성합니다. IAM은 생성한 EC2 역할과 같은 이름의 인스턴스 프로파일을 생성합니다.

  3. 생성한 EC2 역할에 AWS 관리형 정책 AmazonElasticFileSystemClientFullAccess를 할당합니다. 이 정책의 내용은 다음과 같습니다.

    { "Version”: "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientRootAccess", "elasticfilesystem:ClientWrite", "elasticfilesystem:DescribeMountTargets" ], "Resource": "*" } ] }
  4. 다음 설명에 따라 관리 워크스테이션으로 사용 중인 EC2 인스턴스에 인스턴스 프로파일을 연결합니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서인스턴스에 IAM 역할 연결을 참조하세요.

    1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

    2. 탐색 창에서 인스턴스를 선택합니다.

    3. 인스턴스를 선택합니다. 작업에서 인스턴스 설정, IAM 역할 연결/바꾸기을 차례로 선택합니다.

    4. 첫 번째 단계에서 생성한 IAM 역할인 EFS-client-root-access를 선택하고 적용을 선택합니다.

  5. 관리 워크스테이션에 EFS 탑재 도우미를 설치합니다. EFS 탑재 도우미 및 amazon-efs-utils 패키지에 대한 자세한 내용은 Amazon EFS 클라이언트 수동 설치 섹션을 참조하세요.

  6. 다음 명령을 iam 탑재 옵션과 함께 사용하여 관리 워크스테이션에 EFS 파일 시스템을 탑재합니다.

    $ sudo mount -t efs -o tls,iam file-system-id:/ efs-mount-point

    IAM 권한 부여를 사용하여 파일 시스템을 자동으로 탑재하도록 Amazon EC2 인스턴스를 구성할 수 있습니다. IAM 권한 부여를 사용하여 EFS 파일 시스템을 탑재하는 방법에 대한 자세한 내용은 IAM 권한 부여를 통한 탑재 섹션을 참조하세요.

권한 캐싱

Amazon EFS에서는 짧은 기간 동안 파일 권한을 캐싱합니다. 따라서 최근에 액세스 권한이 취소된 사용자가 짧은 기간 동안 해당 객체에 계속해서 액세스하게 될 수 있습니다.

파일 시스템 객체 소유권 변경

Amazon EFS에서는 POSIX chown_restricted 속성을 강제합니다. 즉, 루트 사용자만 파일 시스템 객체의 소유자를 변경할 수 있습니다. 루트 사용자 또는 소유자는 파일 시스템 객체의 소유자 그룹을 변경할 수 있습니다. 그러나 사용자가 루트 사용자가 아닌 경우 그룹은 소유자가 멤버인 그룹으로만 변경할 수 있습니다.

EFS 액세스 포인트

액세스 포인트는 운영 체제 사용자, 그룹 및 파일 시스템 경로를 액세스 포인트를 사용하여 수행된 모든 파일 시스템 요청에 적용합니다. 액세스 포인트의 운영 체제 사용자 및 그룹은 NFS 클라이언트에서 제공하는 모든 자격 증명 정보를 재정의합니다. 파일 시스템 경로는 액세스 포인트의 루트 디렉터리로 클라이언트에 노출됩니다. 이렇게 하면 공유 파일 기반 데이터 세트에 액세스할 때 각 애플리케이션이 항상 올바른 운영 체제 자격 증명과 올바른 디렉터리를 사용할 수 있습니다. 액세스 포인트를 사용하는 애플리케이션은 자체 디렉터리 및 해당 하위 디렉터리의 데이터에만 액세스할 수 있습니다. 액세스 포인트에 대한 자세한 내용은 Amazon EFS 액세스 포인트 작업 섹션을 참조하십시오.