Lambda 환경 변수 보안 - AWS Lambda

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 요금을 참조하십시오.

전송 중 보안

보안을 강화하기 위해 전송 중 암호화를 위한 도우미를 사용하도록 설정하면 전송 중 보호를 위해 환경 변수가 클라이언트 측으로 암호화됩니다.

환경 변수 암호화를 구성하려면
  1. AWS Key Management Service(AWS KMS)를 사용하여 서버 측 및 클라이언트 측 암호화에 사용할 Lambda에 대한 고객 관리형 키를 생성할 수 있습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 키 생성을 참조하세요.

  2. Lambda 콘솔을 사용하여 환경 변수 편집 페이지로 이동합니다.

    1. Lambda 콘솔의 함수 페이지를 엽니다.

    2. 함수를 선택합니다.

    3. 구성을 선택한 다음 왼쪽 탐색 모음에서 환경 변수를 선택합니다.

    4. 환경 변수 섹션에서 편집을 선택합니다.

    5. Encryption configuration(암호화 구성)을 확장합니다.

  3. (선택 사항) 클라이언트측 암호화를 사용하여 전송 중 데이터를 보호하도록 콘솔 암호화 도우미를 활성화합니다.

    1. 전송 중 암호화에서 전송 중 암호화에 대해 도우미 사용을 선택합니다.

    2. 콘솔 암호화 도우미를 사용 설정하려는 각 환경 변수에 대해 환경 변수 옆에 있는 암호화를 선택합니다.

    3. 전송 중 암호화할 AWS KMS key에서, 이 절차를 시작할 때 생성한 고객 관리형 키를 선택합니다.

    4. 실행 역할 정책을 선택하고 정책을 복사합니다. 이 정책은 환경 변수를 복호화할 수 있는 권한을 함수의 실행 역할에 부여합니다.

      이 정책을 저장하여 절차의 마지막 단계에서 사용합니다.

    5. 환경 변수를 복호화하는 함수에 코드를 추가합니다. 예제를 보려면 암호 코드 조각 해독을 선택합니다.

  4. (선택 사항) 유휴 시 암호화를 위해 고객 관리형 키를 지정합니다.

    1. 고객 마스터 키 사용을 선택합니다.

    2. 이 절차를 시작할 때 생성한 고객 관리형 키를 선택합니다.

  5. Save(저장)를 선택합니다.

  6. 권한을 설정합니다.

    서버 측 암호화와 함께 고객 관리형 키를 사용하는 경우, 함수에서 환경 변수를 보거나 관리할 수 있는 사용자 또는 역할에 권한을 부여하세요. 자세한 내용은 서버 측 암호화 KMS 키에 대한 권한 관리 단원을 참조하십시오.

    전송 중 보안을 위해 클라이언트 측 암호화를 사용하도록 설정하는 경우, 함수가 kms:Decrypt API 작업을 호출하려면 권한이 필요합니다. 이전에 이 절차에서 저장한 정책을 함수의 실행 역할에 추가합니다.

서버 측 암호화 KMS 키에 대한 권한 관리

사용자 또는 함수의 실행 역할에 대한 AWS KMS 권한 없이도 기본 암호화 키를 사용할 수 있습니다. 고객 관리형 CMK를 사용하려면 키 사용 권한이 필요합니다. Lambda는 사용자의 권한을 사용하여 키에 대한 권한 부여를 생성합니다. 이를 통해 Lambda가 암호화에 해당 키를 사용할 수 있습니다.

  • kms:ListAliases – Lambda 콘솔에서 키 보기.

  • kms:CreateGrant, kms:Encrypt – 함수에 대한 고객 관리형 키 구성하기

  • kms:Decrypt – 고객 관리형 키로 암호화된 환경 변수를 보고 관리하기

AWS 계정 또는 키의 리소스 기반 권한 정책에서 이러한 권한을 얻을 수 있습니다. ListAliasesLambda의 관리형 정책에서 제공합니다. 키 정책에 따라 키 사용자 그룹의 사용자는 나머지 권한을 받습니다.

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를 참조하세요.