Lambda 환경 변수 보안
환경 변수 보안을 위해 서버측 암호화를 이용해 저장 데이터를 보호하고 클라이언트측 암호화를 이용해 전송 중 데이터를 보호할 수 있습니다.
참고
데이터베이스 보안을 강화하려면 환경 변수 대신 AWS Secrets Manager를 사용하여 데이터베이스 보안 인증 정보를 저장하는 것이 좋습니다. 자세한 내용은 Amazon RDS와 함께 AWS Lambda 사용 단원을 참조하십시오.
저장 중 보안
Lambda는 AWS KMS key를 이용해 항상 저장 중 서버 측 암호화를 제공합니다. 기본적으로 Lambda는 AWS 관리형 키를 사용합니다. 이 기본 동작이 워크플로에 적합한 경우 다른 작업을 설정할 필요가 없습니다. Lambda가 계정에 AWS 관리형 키를 생성하고 사용자에 대한 권한을 관리합니다. AWS에서는 이 키의 사용에 대한 요금을 청구하지 않습니다.
원한다면 AWS KMS 고객 관리형 키를 대신 제공할 수 있습니다. KMS 키의 교체를 제어하거나 KMS 키를 관리하기 위한 조직의 요구 사항을 충족하기 위해 이 작업을 수행할 수 있습니다. 고객 관리형 키를 사용하면 KMS 키에 대한 액세스 권한이 있는 계정의 사용자만 함수에서 환경 변수를 보거나 관리할 수 있습니다.
고객 관리형 키에는 표준 AWS KMS 요금이 발생합니다. 자세한 내용은 AWS Key Management Service 요금
전송 중 보안
보안을 강화하기 위해 전송 중 암호화를 위한 도우미를 사용하도록 설정하면 전송 중 보호를 위해 환경 변수가 클라이언트 측으로 암호화됩니다.
환경 변수 암호화를 구성하려면
-
AWS Key Management Service(AWS KMS)를 사용하여 서버 측 및 클라이언트 측 암호화에 사용할 Lambda에 대한 고객 관리형 키를 생성할 수 있습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 키 생성을 참조하세요.
-
Lambda 콘솔을 사용하여 환경 변수 편집 페이지로 이동합니다.
Lambda 콘솔의 함수 페이지
를 엽니다. -
함수를 선택합니다.
-
구성을 선택한 다음 왼쪽 탐색 모음에서 환경 변수를 선택합니다.
-
환경 변수 섹션에서 편집을 선택합니다.
-
Encryption configuration(암호화 구성)을 확장합니다.
-
(선택 사항) 클라이언트측 암호화를 사용하여 전송 중 데이터를 보호하도록 콘솔 암호화 도우미를 활성화합니다.
-
전송 중 암호화에서 전송 중 암호화에 대해 도우미 사용을 선택합니다.
-
콘솔 암호화 도우미를 사용 설정하려는 각 환경 변수에 대해 환경 변수 옆에 있는 암호화를 선택합니다.
-
전송 중 암호화할 AWS KMS key에서, 이 절차를 시작할 때 생성한 고객 관리형 키를 선택합니다.
-
실행 역할 정책을 선택하고 정책을 복사합니다. 이 정책은 환경 변수를 복호화할 수 있는 권한을 함수의 실행 역할에 부여합니다.
이 정책을 저장하여 절차의 마지막 단계에서 사용합니다.
-
환경 변수를 복호화하는 함수에 코드를 추가합니다. 예제를 보려면 암호 코드 조각 해독을 선택합니다.
-
-
(선택 사항) 유휴 시 암호화를 위해 고객 관리형 키를 지정합니다.
-
고객 마스터 키 사용을 선택합니다.
-
이 절차를 시작할 때 생성한 고객 관리형 키를 선택합니다.
-
-
Save(저장)를 선택합니다.
-
권한을 설정합니다.
서버 측 암호화와 함께 고객 관리형 키를 사용하는 경우, 함수에서 환경 변수를 보거나 관리할 수 있는 사용자 또는 역할에 권한을 부여하세요. 자세한 내용은 서버 측 암호화 KMS 키에 대한 권한 관리 단원을 참조하십시오.
전송 중 보안을 위해 클라이언트 측 암호화를 사용하도록 설정하는 경우, 함수가
kms:Decrypt
API 작업을 호출하려면 권한이 필요합니다. 이전에 이 절차에서 저장한 정책을 함수의 실행 역할에 추가합니다.
서버 측 암호화 KMS 키에 대한 권한 관리
사용자 또는 함수의 실행 역할에 대한 AWS KMS 권한 없이도 기본 암호화 키를 사용할 수 있습니다. 고객 관리형 CMK를 사용하려면 키 사용 권한이 필요합니다. Lambda는 사용자의 권한을 사용하여 키에 대한 권한 부여를 생성합니다. 이를 통해 Lambda가 암호화에 해당 키를 사용할 수 있습니다.
-
kms:ListAliases
– Lambda 콘솔에서 키 보기. -
kms:CreateGrant
,kms:Encrypt
– 함수에 대한 고객 관리형 키 구성하기 -
kms:Decrypt
– 고객 관리형 키로 암호화된 환경 변수를 보고 관리하기
AWS 계정 또는 키의 리소스 기반 권한 정책에서 이러한 권한을 얻을 수 있습니다. ListAliases
는 Lambda의 관리형 정책에서 제공합니다. 키 정책에 따라 키 사용자 그룹의 사용자는 나머지 권한을 받습니다.
Decrypt
권한이 없는 사용자도 기능을 관리할 수 있지만 Lambda 콘솔에서 환경 변수를 보거나 관리할 수는 없습니다. 사용자가 환경 변수를 볼 수 없도록 하려면 기본 키, 고객 관리형 키 또는 모든 키에 대한 액세스를 거부하는 사용자 권한에 문을 추가합니다.
예 IAM 정책 - 키 ARN별 액세스 거부
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:111122223333:key/3be10e2d-xmpl-4be4-bc9d-0405a71945cc" } ] }
키 권한 관리에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 Key policies in AWS KMS를 참조하세요.