IAM 사용자에게 Lambda 환경 변수를 숨기려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 2월 20일

AWS Lambda 함수에 액세스할 수 있는 AWS Identity and Access Management(IAM) 사용자가 환경 변수와 암호화되지 않은 텍스트를 보지 못 하도록 방지하고 싶습니다. 어떻게 해야 합니까?

​해결 방법

참고: 이 솔루션은 Lambda 콘솔 또는 Lambda API를 사용하는 경우에만 IAM 자격 증명Lambda 함수의 환경 변수를 보지 못 하도록 합니다. 이 솔루션은 이러한 IAM 자격 증명이 함수의 코드를 사용하여 복호화된 환경 변수에 액세스하거나 환경 변수 값을 Amazon CloudWatch Logs로 출력하는 것을 방지하지 않습니다.

IAM 자격 증명이 Lambda 환경 변수의 암호, 키 또는 기타 민감한 정보에 액세스하지 못 하게 방지하려면 AWS KMS(AWS Key Management Service) 고객 마스터 키(CMK)를 사용하여 환경 변수를 암호화합니다. 자세한 내용은 환경 변수 보호를 참조하십시오.

CMK가 액세스 권한이 필요 없는 IAM 자격 증명에 대한 액세스를 거부하도록 키 정책을 편집합니다. 다음과 같은 키 정책을 예시로 사용할 수 있습니다.

참고: arn:aws:iam::1234567890:User1DeniedAccessarn:aws:iam::1234567890:User2DeniedAccess를 액세스를 거부하고자 하는 IAM 자격 증명의 Amazon 리소스 이름(ARN)으로 대체합니다. 필요에 따라 IAM ARN을 키 정책에 더 추가합니다.

{
    "Id": "MyCustomKey",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Deny IAM users permission to see Lambda environment variables",
            "Effect": "Deny",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::1234567890:User1DeniedAccess",
                    "arn:aws:iam::1234567890:User2DeniedAccess"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}

액세스가 거부된 IAM 자격 증명이 Lambda 콘솔에서 Lambda 함수의 환경 변수를 확인하려고 시도하면 다음과 오류가 나타납니다.

"Lambda was unable to decrypt your environment variables because the KMS access was denied. Please check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access."

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?