기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Lambda 함수에서 AWS Secrets Manager 보안 암호 사용
AWS 파라미터 및 보안 암호 Lambda 확장을 사용하면 SDK를 사용하지 않고도 Lambda 함수에서 AWS Secrets Manager 보안 암호를 검색하고 캐싱할 수 있습니다. 캐싱된 보안 암호를 검색하는 것이 Secret Manager에서 검색하는 것보다 빠릅니다. Secrets Manager API를 호출하는 데는 비용이 발생하므로 캐시를 사용하면 비용을 줄일 수 있습니다. 이 익스텐션은 Secrets Manager 보안 암호와 Parameter Store 파라미터를 모두 검색할 수 있습니다. Parameter Store에 대한 자세한 내용은 AWS Systems Manager 사용 설명서의 Using Parameter Store parameters in Lambda functions(Lambda 확장과 Parameter Store 통합)를 참조하세요.
Lambda 확장은 Lambda 함수의 기능에 추가되는 동반 프로세스입니다. 자세한 내용은 Lambda 개발자 안내서의 Lambda 확장을 참조하세요. 컨테이너 이미지의 확장 사용에 대한 자세한 내용은 컨테이너 이미지의 Lambda 계층 및 확장을 통한 작업PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL
을 debug
로 설정합니다.
파라미터 및 보안 암호에 대한 인 메모리 캐시를 제공하기 위해 확장은 로컬 HTTP 엔드포인트인 localhost 포트 2773을 Lambda 환경에 노출합니다. 환경 변수 PARAMETERS_SECRETS_EXTENSION_HTTP_PORT
를 설정하여 포트를 구성할 수 있습니다.
Lambda는 함수에 필요한 동시성 레벨에 해당하는 별도의 인스턴스를 인스턴스화합니다. 각 인스턴스는 격리되며 구성 데이터의 자체 로컬 캐시를 유지합니다. Lambda 인스턴스 및 동시성에 대한 자세한 내용은 Lambda 개발자 안내서의 Lambda 예약된 동시성 관리를 참조하세요.
ARM 익스텐션을 추가하려면 Lambda 함수의 arm64
아키텍처를 사용해야 합니다. 자세한 내용은 Lambda 개발자 안내서의 Lambda 명령 세트 아키텍처를 참조하세요. 이 익스텐션은 아시아 태평양(뭄바이), 미국 동부(오하이오), 유럽(아일랜드), 유럽(프랑크푸르트), 유럽(취리히), 미국 동부(버지니아 북부), 유럽(런던), 유럽(스페인), 아시아 태평양(도쿄), 미국 서부(오레곤), 아시아 태평양(싱가포르), 아시아 태평양(하이데라바드), 아시아 태평양(시드니) 리전에서 ARM을 지원합니다.
확장은 AWS 클라이언트를 사용합니다. AWS 클라이언트 구성에 대한 자세한 내용은 AWS SDK 및 도구 참조 가이드의 Settings reference를 참조하세요. Lambda 함수가 VPC에서 실행될 경우, 확장이 Secrets Manager를 직접적으로 호출할 수 있도록 VPC 엔드포인트를 생성해야 합니다. 자세한 내용은 AWS Secrets Manager VPC 엔드포인트 사용 단원을 참조하십시오.
필요한 권한:
Lambda 실행 역할에는 보안 암호에 대한
secretsmanager:GetSecretValue
권한이 있어야 합니다.AWS 관리형 키
aws/secretsmanager
대신 고객 관리형 키로 보안 암호를 암호화하는 경우 실행 역할은 KMS 키에 대한kms:Decrypt
권한도 필요합니다.
AWS 파라미터 및 보안 암호 Lambda 확장을 사용하려면
-
함수에 AWS Parameters and Secrets Lambda Extension이라는 AWS 계층을 추가합니다. 지침을 보려면 Lambda 개발자 안내서의 함수에 계층 추가 단원을 참조하세요. AWS CLI를 사용하여 계층을 추가할 경우 확장의 ARN이 필요합니다. ARN 목록은 AWS Systems Manager 사용 설명서의 AWS 매개변수 및 보안 암호 Lambda 확장 ARN을 참조하세요.
-
Lambda 실행 역할에게 보안 암호에 액세스할 수 있는 권한을 부여합니다.
-
보안 암호에 대한
secretsmanager:GetSecretValue
권한. 예: 개별 보안 암호 값을 검색할 수 있는 권한 섹션을 참조하세요. -
(선택 사항) AWS 관리형 키
aws/secretsmanager
대신 고객 관리형 키로 보안 암호를 암호화하는 경우 실행 역할은 KMS 키에 대한kms:Decrypt
권한도 필요합니다. -
ABAC(속성 기반 액세스 제어)를 Lambda 역할과 함께 사용하여 계정의 보안 암호에 더 세밀하게 액세스할 수 있습니다. 자세한 내용은 속성 기반 액세스 제어(ABAC)를 사용하여 보안 암호에 대한 액세스 제어 단원을 참조하십시오.
-
-
Lambda 환경 변수를 사용하여 캐시를 구성합니다.
-
익스텐션 캐시에서 보안 암호를 검색하려면 먼저 요청 헤더에
X-AWS-Parameters-Secrets-Token
을 추가해야 합니다. 모든 실행 중인 함수에 대해 Lambda에서 제공하는AWS_SESSION_TOKEN
으로 토큰을 설정합니다. 이 헤더를 사용하면 호출자가 Lambda 환경 내에 있음을 나타냅니다.다음 Python 예제에서는 헤더를 추가하는 방법을 보여줍니다.
import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
-
Lambda 함수 내에서 보안 암호를 검색하려면 다음 HTTP GET 요청 중 하나를 사용합니다.
-
secretId
에 대한 보안 암호를 검색하려면 보안 암호의 ARN 또는 이름을 사용합니다.GET: /secretsmanager/get?secretId=
secretId
-
이전 보안 암호 값이나 스테이징 레이블별 특정 버전을 검색하려면,
secretId
의 경우 보안 암호의 ARN 또는 이름을 사용하고,versionStage
인 경우 스테이징 레이블을 사용하십시오.GET: /secretsmanager/get?secretId=
secretId
&versionStage=AWSPREVIOUS
ID별로 특정 암호 버전을 검색하려면,
secretId
의 경우 보안 암호의 ARN 또는 이름을 사용하고,versionId
인 경우 버전 ID를 사용하십시오.GET: /secretsmanager/get?secretId=
secretId
&versionId=versionId
예 보안 암호 검색(Python)
다음 Python 예제에서는
json.loads
를 사용하여 보안 암호를 검색하고 결과를 구문 분석하는 방법을 보여줍니다. secrets_extension_endpoint = "http://localhost:" + \ secrets_extension_http_port + \ "/secretsmanager/get?secretId=" + \
<secret_name>
r = requests.get(secrets_extension_endpoint, headers=headers) secret = json.loads(r.text)["SecretString"] # load the Secrets Manager response into a Python dictionary, access the secret -
AWS 파라미터 및 보안 암호 Lambda 확장 환경 변수
다음과 같은 환경 변수를 사용하여 익스텐션을 구성할 수 있습니다.
환경 변수를 사용하는 방법에 대한 자세한 내용은 Lambda 개발자 안내서의 Lambda 환경 변수 사용을 참조하세요.
PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED
-
파라미터와 보안 암호를 캐시하려면 true로 설정합니다. 캐싱이 없는 경우 false로 설정합니다. 기본값은 true입니다.
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE
캐시할 최대 보안 암호 및 파라미터 수입니다. 0~1000 사이의 값이어야 합니다. 값이 0이면 적용된 캐싱이 없는 것입니다. 이 변수는
SSM_PARAMETER_STORE_TTL
및SECRETS_MANAGER_TTL
이 모두 0일 경우 무시됩니다. 기본값은 1000입니다.PARAMETERS_SECRETS_EXTENSION_HTTP_PORT
로컬 HTTP 서버의 포트입니다. 기본값은 2773입니다.
PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL
-
익스텐션 로깅 수준은
debug
,info
,warn
,error
또는none
을 제공합니다. 캐시 구성을 보려면debug
로 설정합니다. 기본값은info
입니다. PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS
-
익스텐션에서 Parameter Store 또는 Secrets Manager에 요청하는 데 사용되는 HTTP 클라이언트의 최대 연결 수입니다. 이는 클라이언트별 구성입니다. 기본값은 3입니다.
SECRETS_MANAGER_TIMEOUT_MILLIS
-
Secrets Manager에 대한 요청 제한 시간(밀리초)입니다. 값이 0이면 적용된 시간 제한이 없는 것입니다. 기본값은 0.
SECRETS_MANAGER_TTL
-
캐시에 있는 보안 암호의 TTL(초)입니다. 값이 0이면 적용된 캐싱이 없는 것입니다. 최댓값은 300초입니다.
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE
가 0인 경우 이 변수는 무시됩니다. 기본값은 300초입니다. SSM_PARAMETER_STORE_TIMEOUT_MILLIS
Parameter Store에 대한 요청 제한 시간(밀리초)입니다. 값이 0이면 적용된 시간 제한이 없는 것입니다. 기본값은 0.
SSM_PARAMETER_STORE_TTL
캐시에 있는 파라미터의 TTL(초)입니다. 값이 0이면 적용된 캐싱이 없는 것입니다. 최댓값은 300초입니다.
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE
가 0인 경우 이 변수는 무시됩니다. 기본값은 300초입니다.