기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AmazonHDFS에서 의 투명한 암호화 EMR
투명한 암호화는 사용자가 정의한 HDFS 경로인 HDFS 암호화 영역 를 사용하여 구현됩니다. 각 암호화 영역에는 고유의 키가 있으며, 이 키는 hdfs-site
구성 분류를 사용하여 지정된 키 서버에 저장됩니다.
Amazon EMR 릴리스 버전 4.8.0부터 Amazon EMR 보안 구성을 사용하여 클러스터에 대한 데이터 암호화 설정을 더 쉽게 구성할 수 있습니다. 보안 구성은 Amazon Elastic Block Store(Amazon EBS) 스토리지 볼륨 및 Amazon S3의 데이터에 전송 중인 데이터와 저장 중인 EMRFS 데이터에 대한 보안을 활성화하는 설정을 제공합니다. 자세한 내용은 Amazon EMR 관리 가이드의 전송 중 및 저장 중 데이터 암호화를 참조하세요.
AmazonEMR은 KMS 기본적으로 Hadoop을 사용하지만 작업을 구현KMS하는 다른 를 KeyProvider API 사용할 수 있습니다. HDFS 암호화 영역의 각 파일에는 암호화 영역 키로 암호화된 고유한 데이터 암호화 키 가 있습니다. HDFS 암호화 및 복호화 활동은 클라이언트에서만 발생하므로 데이터가 암호화 영역에 기록될 때 데이터가 암호화 end-to-end됩니다(저장 및 전송 중).
암호화 영역 간에 또는 암호화 영역에서 암호화되지 않은 경로로 파일을 이동할 수 없습니다.
NameNode 및 HDFS 클라이언트는 작업을 통해 HadoopKMS(또는 KMS 구성한 대체)과 상호 작용합니다 KeyProvider API. KMS 는 백업 키 스토어에 암호화 키를 저장하는 역할을 합니다. 또한 AmazonEMR에는 JCE 무제한 강도 정책이 포함되어 있으므로 원하는 길이로 키를 생성할 수 있습니다.
자세한 내용은 Hadoop 설명서의 에서 투명한 암호화HDFS
참고
Amazon 에서 EMR KMS overHTTPS는 기본적으로 Hadoop 에서 활성화되지 않습니다KMS. KMS 를 통해 활성화하는 방법에 대한 자세한 내용은 Hadoop KMS 설명서
HDFS 투명 암호화 구성
키를 생성하고 암호화 영역을 추가하여 Amazon에서 투명한 암호화EMR를 구성할 수 있습니다. 여러 가지 방법으로 이 작업을 수행할 수 있습니다.
-
클러스터를 생성할 때 Amazon EMR 구성 API 작업 사용
-
command-runner.jar에서 Hadoop JAR 단계 사용
-
하둡 클러스터의 마스터 노드에 로그인하여
hadoop key
및hdfs crypto
명령줄 클라이언트 사용 -
REST APIs HadoopKMS용 및 사용 HDFS
에 대한 자세한 내용은 Hadoop KMS 및 에 대한 해당 설명서를 REST APIs참조하세요HDFS.
를 사용하여 클러스터 생성 시 암호화 영역 및 해당 키를 생성하려면 CLI
구성 API 작업의 hdfs-encryption-zones
분류를 사용하면 클러스터를 생성할 때 키 이름과 암호화 영역을 지정할 수 있습니다. Amazon은 클러스터의 HadoopKMS에서 이 키를 EMR 생성하고 암호화 영역을 구성합니다.
-
다음 명령을 사용하여 클러스터를 생성합니다.
aws emr create-cluster --release-label
emr-7.3.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
myConfig.json
:[ { "Classification": "hdfs-encryption-zones", "Properties": { "/myHDFSPath1": "path1_key", "/myHDFSPath2": "path2_key" } } ]
마스터 노드에서 암호화 영역과 해당 키를 수동으로 생성하려면
-
4.1.0보다 큰 Amazon EMR 릴리스를 사용하여 클러스터를 시작합니다.
-
를 사용하여 클러스터의 마스터 노드에 연결합니다SSH.
-
Hadoop 내에서 키를 생성합니다KMS.
$ hadoop key create path2_key path2_key has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=256, description='null', attributes=null}. KMSClientProvider[http://ip-x-x-x-x.ec2.internal:16000/kms/v1/] has been updated.
중요
HadoopKMS에서는 키 이름을 소문자로 지정해야 합니다. 대문자가 있는 키를 사용하면 클러스터가 시작 중 실패합니다.
-
에서 암호화 영역 경로를 생성합니다HDFS.
$ hadoop fs -mkdir /myHDFSPath2
-
생성한 키를 사용하여 HDFS 경로를 암호화 영역으로 만듭니다.
$ hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2 Added encryption zone /myHDFSPath2
를 사용하여 암호화 영역 및 해당 키를 수동으로 생성하려면 AWS CLI
-
다음 명령을 사용하여 KMS 키 및 암호화 영역을 수동으로 생성하는 단계를 추가합니다.
aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Create First Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path1_key\""] \ Type=CUSTOM_JAR,Name="Create First Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create First Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path1_key -path /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path2_key\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath2\""] \ Type=CUSTOM_JAR,Name="Create Second Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2\""]
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
HDFS 투명한 암호화에 대한 고려 사항
모범 사례는 파일을 작성할 수 있는 각 애플리케이션에 대해 암호화 영역을 생성하는 것입니다. 또한 구성의 hdfs-encryption-zones 분류를 HDFS 사용하여 모든 를 암호화API하고 루트 경로(/)를 암호화 영역으로 지정할 수 있습니다.
Hadoop 키 관리 서버
HadoopKMS
Hadoop 를 hadoop-kms-site 구성하려면 분류를 KMS사용하여 설정을 변경합니다. 를 구성하려면 분류 kms-acls를 ACLs사용합니다.
자세한 내용은 Hadoop KMS 설명서
참고
Amazon 에서 EMR KMS overHTTPS는 기본적으로 Hadoop 에서 활성화되지 않습니다KMS. 를 KMS 통해 활성화하는 방법을 알아보려면 Hadoop KMS 설명서
중요
HadoopKMS에서는 키 이름을 소문자로 지정해야 합니다. 대문자가 있는 키를 사용하면 클러스터가 시작 중 실패합니다.
AmazonKMS에서 Hadoop 구성 EMR
Amazon EMR 릴리스 버전 4.6.0 이상을 사용하는 kms-http-port
는 9700이고 는 9701kms-admin-port
입니다.
Amazon EMR 릴리스에 API 대한 구성을 사용하여 KMS 클러스터 생성 시 Hadoop을 구성할 수 있습니다. 다음은 Hadoop 에 사용할 수 있는 구성 객체 분류입니다KMS.
분류 | Filename |
---|---|
hadoop-kms-site | kms-site.xml |
hadoop-kms-acls | kms-acls.xml |
hadoop-kms-env | kms-env.sh |
hadoop-kms-log4j | kms-log4j.properties |
를 KMS ACLs 사용하여 Hadoop을 설정하려면 CLI
-
다음 명령을 ACLs 사용하여 를 사용하여 HadoopKMS으로 클러스터를 생성합니다.
aws emr create-cluster --release-label
emr-7.3.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
myConfig.json
:[ { "Classification": "hadoop-kms-acls", "Properties": { "hadoop.kms.blacklist.CREATE": "hdfs,foo,myBannedUser", "hadoop.kms.acl.ROLLOVER": "myAllowedUser" } } ]
를 사용하여 Hadoop KMS 캐시를 비활성화하려면 CLI
-
다음 명령을
false
사용하여 Hadoop이 로 KMShadoop.kms.cache.enable
설정된 클러스터를 생성합니다.aws emr create-cluster --release-label
emr-7.3.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
myConfig.json
:[ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.cache.enable": "false" } } ]
를 사용하여 kms-env.sh
스크립트에서 환경 변수를 설정하려면 CLI
-
kms-env.sh
에서hadoop-kms-env
구성을 통해 설정을 변경합니다. 다음 명령을 KMS 사용하여 Hadoop을 사용하여 클러스터를 생성합니다.aws emr create-cluster --release-label
emr-7.3.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
myConfig.json
:[ { "Classification": "hadoop-kms-env", "Properties": { }, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_LIBRARY_PATH": "
/path/to/files
", "KMS_SSL_KEYSTORE_FILE": "/non/Default/Path/
.keystore", "KMS_SSL_KEYSTORE_PASS": "myPass
" }, "Configurations": [ ] } ] } ]
Hadoop 구성에 대한 자세한 내용은 Hadoop KMS 설명서 섹션을
HDFS 여러 마스터 노드가 있는 EMR 클러스터의 투명한 암호화
Apache Ranger
Apache Ranger는 여러 프라이머리 노드가 있는 Amazon EMR 클러스터RDS에 대해 Amazon에 루트 키와 Encryption Zone(EZ) 키를 KMS 저장합니다. 여러 기본 노드가 있는 Amazon EMR 클러스터HDFS에서 에서 투명한 암호화를 활성화하려면 다음 구성을 제공해야 합니다.
-
Ranger KMS 루트 키와 EZ 키를 저장URL하기 위한 Amazon RDS 또는 자체 MySQL 서버 연결
-
My의 사용자 이름 및 암호SQL
-
Ranger KMS 루트 키의 암호
-
내SQL 서버에 SSL 연결하기 위한 CA(인증 기관) PEM 파일
다음 예제에서 보여주듯이 ranger-kms-dbks-site
분류 및 ranger-kms-db-ca
분류를 사용하여 이러한 구성을 제공할 수 있습니다.
[ { "Classification": "ranger-kms-dbks-site", "Properties": { "ranger.ks.jpa.jdbc.url": "
jdbc:log4jdbc:mysql://mysql-host-url.xx-xxx-1.xxx.amazonaws.com:3306/rangerkms
", "ranger.ks.jpa.jdbc.user": "mysql-user-name
", "ranger.ks.jpa.jdbc.password": "mysql-password
", "ranger.db.encrypt.key.password": "password-for-encrypting-a-master-key
" } }, { "Classification": "ranger-kms-db-ca", "Properties": { "ranger.kms.trust.ca.file.s3.url": "s3://rds-downloads/rds-ca-2019-root.pem
" } } ]
다음은 Apache Ranger 에 대한 구성 객체 분류입니다KMS.
분류 | 설명 |
---|---|
ranger-kms-dbks-site | Ranger 의 dbks-site.xml 파일의 값을 변경합니다KMS. |
ranger-kms-site | Ranger 의 ranger-kms-site.xml 파일에서 값을 변경합니다KMS. |
ranger-kms-env | Ranger KMS 환경에서 값을 변경합니다. |
ranger-kms-log4j | Ranger 의 kms-log4j.properties 파일의 값을 변경합니다KMS. |
ranger-kms-db-ca | S3 for MySQL SSL connection with Ranger 에서 CA 파일의 값을 변경합니다KMS. |
고려 사항
-
보안을 강화하려면 Amazon RDS 인스턴스를 암호화하는 것이 좋습니다. 자세한 내용은 Amazon RDS 리소스 암호화 개요 섹션을 참조하세요.
-
높은 보안 막대를 위해 여러 기본 노드가 있는 각 Amazon EMR 클러스터에 대해 별도의 MySQL 데이터베이스를 사용하는 것이 좋습니다.
-
여러 기본 노드가 있는 Amazon EMR 클러스터HDFS에서 의 투명한 암호화를 구성하려면 클러스터를 생성하는 동안
hdfs-encryption-zones
분류를 지정해야 합니다. 그렇지 않으면 RangerKMS가 구성되거나 시작되지 않습니다. 실행 중인 클러스터에서hdfs-encryption-zones
분류 또는 Hadoop KMS 구성 분류를 재구성하는 것은 여러 기본 노드가 있는 Amazon EMR 클러스터에서는 지원되지 않습니다.