전송 중인 데이터 암호화 - Amazon Elastic File System을 사용하여 파일 데이터 암호화

전송 중인 데이터 암호화

모든 NFS 트래픽이 산업 표준 AES-256 암호와 함께 전송 계층 보안(TLS) 1.2를 사용하여 전송 중에 암호화되도록 파일 시스템을 탑재할 수 있습니다. TLS는 네트워크를 통해 교환되는 정보를 암호화하는 데 사용되는 업계 표준 암호화 프로토콜 집합입니다. AES-256은 TLS에서 데이터를 전송하는 데 사용되는 256비트 암호화 암호입니다. 파일 시스템에 액세스하는 모든 클라이언트에서 전송 중에 암호화를 설정하는 것이 좋습니다.

IAM 정책을 사용하여 Amazon EFS에 대한 NFS 클라이언트 액세스에 전송 중 암호화를 적용할 수 있습니다. 클라이언트가 파일 시스템에 연결하면, Amazon EFS에서 파일 시스템의 IAM 리소스 정책(즉, 파일 시스템 정책)과 자격 증명 기반의 IAM 정책을 평가하여 부여할 적절한 파일 시스템 액세스 권한을 결정합니다. 파일 시스템 리소스 정책의 aws:SecureTransport 조건 키를 사용하여 EFS 파일 시스템에 연결할 때 NFS 클라이언트가 TLS를 사용하도록 적용할 수 있습니다.

참고

IAM 권한 부여를 사용하여 NFS 클라이언트의 액세스를 제어하려면 EFS 탑재 헬퍼를 사용하여 Amazon EFS 파일 시스템을 탑재해야 합니다. 자세한 내용은 Amazon EFS 사용 설명서IAM 권한 부여를 사용하여 탑재를 참조하세요.

다음 예제인 EFS 파일 시스템 정책은 전송 중에 암호화를 적용하며 다음과 같은 특징이 있습니다.

  • effectallow입니다.

  • 보안 주체는 모든 IAM 엔터티에 대해 *로 설정됩니다.

  • 작업은 ClientMount, ClientWriteClientRootAccess로 설정됩니다.

  • 권한 부여 조건은 SecureTransport로 설정됩니다. TLS를 사용하여 파일 시스템에 연결하는 NFS 클라이언트에만 액세스 권한이 부여됩니다.

    { “Version”: “2012-10-17”, “Id”: “ExamplePolicy01”, “Statement”: [ { “Sid”: “VisualEditior0”, “Effect”: “Allow”, “Principal”: { “AWS”: “*”, }, “Action”: [ “elasticfilesystem:ClientRootAccess”, “elasticfilesystem:ClientMount”, “elasticfilesystem:ClientWrite” ], “Condition”: { “Bool”: { “aws:SecureTransport”: “true” } } } ] }

    Amazon EFS 콘솔 또는 AWS CLI를 사용하여 파일 시스템 정책을 생성할 수 있습니다.

EFS 콘솔을 사용하여 파일 시스템 정책을 생성하는 방법은 다음과 같습니다.

  1. Amazon EFS 콘솔을 엽니다.

  2. 파일 시스템(File Systems)을 선택합니다.

  3. 파일 시스템(File systems) 페이지에서 파일 시스템 정책을 편집 또는 생성할 파일 시스템을 선택합니다. 해당 파일 시스템의 세부 정보 페이지가 표시됩니다.

  4. 파일 시스템 정책(File system policy)을 선택한 다음, 편집(Edit)을 선택합니다. 파일 시스템 정책(File system policy) 페이지가 표시됩니다.

    파일 시스템 정책 생성

  5. 정책 옵션(Policy options)에서 다음과 같이 사용 가능한 사전 구성된 정책 옵션을 선택하는 것이 좋습니다.

    • 기본적으로 루트 액세스 차단

    • 기본적으로 읽기 전용 액세스 적용

    • 모든 클라이언트에 전송 중 데이터 암호화 적용

    미리 구성된 정책을 선택하면 정책 JSON 개체가 정책 편집기(Policy editor) 패널에 표시됩니다.

  6. 추가 권한 부여(Grant additional permissions)를 사용하여 다른 AWS 계정을 비롯한 추가 IAM 보안 주체에게 파일 시스템 권한을 부여합니다. 추가(Add)를 선택한 다음, 권한을 부여할 엔터티의 보안 주체 ARN을 입력하고 부여할 권한(Permissions)을 선택합니다.

  7. 정책 편집기(Policy editor)를 사용하여 미리 구성된 정책을 사용자 지정하거나 요구 사항에 따라 고유한 정책을 만듭니다. 이 편집기를 사용하면 미리 구성된 정책 옵션을 사용할 수 없게 됩니다. 정책 변경 사항을 실행 취소하려면 지우기(Clear)를 선택합니다.

    편집기를 지우면 미리 구성된 정책을 다시 사용할 수 있게 됩니다.

  8. 정책 편집 또는 작성을 완료한 후 저장(Save)을 선택합니다.

    파일 시스템의 세부 정보 페이지가 표시되고 파일 시스템 정책(File system policy)에 정책이 표시됩니다.

    AWS CloudFormation, AWS SDK 또는 Amazon EFS API를 직접 사용하여 프로그래밍 방식으로 파일 시스템 정책을 생성할 수도 있습니다. 파일 시스템 정책 생성에 대한 자세한 내용은 Amazon EFS 사용 설명서 파일 시스템 정책 생성을 참조하세요.

전송 중인 데이터의 암호화 설정

전송 중인 데이터의 암호화를 설정하려면 각 클라이언트에서 EFS 탑재 헬퍼를 다운로드하는 것이 좋습니다. EFS 탑재 헬퍼는 전송 중인 데이터의 암호화 설정을 비롯하여 EFS 사용을 간소화하기 위해 AWS에서 제공하는 오픈 소스 유틸리티입니다. 탑재 헬퍼는 기본적으로 EFS 권장 탑재 옵션을 사용합니다.

EFS 탑재 헬퍼는 다음과 같은 Linux 배포판에서 지원됩니다.

  • Amazon Linux 2017.09+

  • Amazon Linux 2+

  • Debian 9+

  • Fedora 28+

  • Red Hat Enterprise Linux / CentOS 7+

  • Ubuntu 16.04+

전송 중인 데이터의 암호화를 설정하는 방법은 다음과 같습니다.

  1. EFS 탑재 헬퍼를 설치합니다.

    • Amazon Linux의 경우 다음 명령을 사용합니다.

      sudo yum install -y amazon-efs-utils
    • 다른 Linux 배포판의 경우 GitHub에서 다운로드하여 설치합니다.

      Amazon-efs-utils 패키지는 NFS 클라이언트(nfs-utils), 네트워크 릴레이(stunnel), OpenSSL 및 Python과 같은 종속성을 자동으로 설치합니다.

  2. 파일 시스템을 탑재합니다.

    sudo mount -t efs -o tls file-system-id efs-mount-point
    • mount -t efs는 EFS 탑재 헬퍼를 호출합니다.

    • EFS 탑재 헬퍼를 사용하여 탑재하는 경우 파일 시스템의 DNS 이름 또는 탑재 대상의 IP 주소를 사용할 수 없습니다. 대신 파일 시스템 ID를 사용하세요.

    • EFS 탑재 헬퍼는 기본적으로 AWS 권장 탑재 옵션을 사용합니다. 이러한 기본 탑재 옵션을 재정의하는 것은 권장되지 않지만 상황에 따라 유연하게 변경할 수 있습니다. 탑재 옵션 재정의를 철저히 테스트하여 이러한 변경 사항이 파일 시스템 액세스 및 성능에 어떤 영향을 미치는지 파악하는 것이 좋습니다.

    • 다음 표에는 EFS 탑재 헬퍼에서 사용하는 기본 탑재 옵션이 나와 있습니다.

      옵션 설명
      nfsvers=4.1 NFS 프로토콜 버전
      rsize=1048576 NFS 클라이언트가 각 네트워크 읽기 요청에 대해 수신할 수 있는 최대 데이터 바이트 수
      wsize=1048576 NFS 클라이언트가 각 네트워크 쓰기 요청에 대해 전송할 수 있는 최대 데이터 바이트 수
      hard NFS 요청 시간이 초과된 후에는 NFS 클라이언트의 복구 동작을 설정하여 서버가 응답할 때까지 NFS 요청을 무기한 재시도
      timeo=600 NFS 클라이언트가 NFS 요청을 재시도하기 전에 응답을 기다리는 데 사용하는 제한 시간 값(데시초)
      retrans=2 NFS 클라이언트가 추가 복구 작업을 시도하기 전에 요청을 재시도하는 횟수
      noresvport 네트워크 연결이 다시 설정되면 NFS 클라이언트에 새 TCP 소스 포트를 사용하도록 지시
    • 시스템을 다시 시작한 후 파일 시스템을 자동으로 다시 탑재하려면 /etc/fstab에 다음 줄을 추가합니다.

      file-system-id efs-mount-point efs _netdev, tls, iam 0 0

전송 중인 데이터 암호화 사용

조직에서 전송 중인 데이터 암호화를 요구하는 기업 정책 또는 규제 정책이 적용되는 경우, 파일 시스템에 액세스하는 모든 클라이언트에서 전송 중인 데이터의 암호화를 사용하는 것이 좋습니다. 암호화 및 암호 해독은 연결 수준에서 구성되며 또 다른 보안 계층을 추가합니다.

EFS 탑재 헬퍼를 사용하여 파일 시스템을 탑재하면 클라이언트와 Amazon EFS 간에 TLS 1.2 터널이 설정 및 유지되며, 모든 NFS 트래픽이 이 암호화된 터널을 통해 라우팅됩니다. 암호화된 TLS 연결을 설정하는 데 사용되는 인증서는 Amazon 인증 기관(CA)에서 서명하고 대부분의 최신 Linux 배포판에서 신뢰합니다. 또한 EFS 탑재 헬퍼는 감시 프로세스를 생성하여 각 파일 시스템에 대한 모든 보안 터널을 모니터링하고 실행 중인지 확인합니다.

EFS 탑재 헬퍼를 사용하여 Amazon EFS에 대한 암호화된 연결을 설정한 후에는 다른 사용자 입력이나 구성이 필요하지 않습니다. 암호화는 파일 시스템에 액세스하는 사용자 연결 및 애플리케이션에 영향을 미치지 않습니다.

EFS 탑재 헬퍼를 사용하여 EFS 파일 시스템에 암호화된 연결을 탑재하고 설정하면 탑재 명령의 출력에 파일 시스템이 탑재되고 localhost(127.0.0.1)를 네트워크 릴레이로 사용하여 암호화된 터널이 설정되었음을 알 수 있습니다. 다음 샘플 출력을 참조하세요.

127.0.0.1:/ on efs-mount-point type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=20059,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)

efs-mount-point를 EFS 파일 시스템에 매핑하려면 /var/log/amazon/efs에서 mount.log 파일을 쿼리하고 마지막으로 성공한 탑재 작업을 찾습니다. 이 작업은 다음과 같은 간단한 grep 명령을 사용하여 수행할 수 있습니다.

grep -E "Successfully mounted.*efs-mount-point" /var/log/amazon/efs/mount.log | tail -1

이 grep 명령의 출력은 탑재된 EFS 파일 시스템의 DNS 이름을 반환합니다. 아래 샘플 출력을 참조하세요.

2018-03-15 07:03:42,363 - INFO - Successfully mounted file-system-id.efs.region.amazonaws.com at efs-mount-point