AWS Lambda를 사용하여 API 비밀에 액세스하는 방법은 무엇입니까?

Aws Lambdaleul Sayonghayeo Api Bimil E Aegseseuhaneun Bangbeob Eun Mueos Ibnikka



AWS 서비스의 모범 사례에는 저장-검색 및 감사-회전이라는 두 가지 작업이 포함됩니다. 이 두 가지 방법을 하나로 결합한 AWS는 사용자가 애플리케이션의 비밀 정보를 보호하는 데 도움이 되는 Secret Manager를 출시했습니다. AWS Secret Manager는 다음을 생성하는 데 널리 사용됩니다. 저장 , 수정 , 복제 및 순환 데이터베이스 자격 증명, API 키, OAuth 토큰 등

빠른 개요

이 문서에서는 다음 측면을 다룹니다.

AWS 람다란 무엇입니까?

AWS Lambda는 서버를 제공하고 관리하지 않고도 다양한 환경과 언어에서 코드를 실행할 수 있는 컴퓨팅 서비스입니다. 또한 AWS Lambda는 S3 버킷, API 게이트웨이 등과 같은 다양한 AWS 서비스에 의해 트리거될 수 있습니다. 이 서비스는 사용자가 추가 종속성을 설치할 필요 없이 애플리케이션을 자동으로 확장하고 코드를 효율적으로 실행합니다.







Lambda 서비스에 대해 자세히 알아보려면 여기에서 이 문서를 참조하세요. “AWS Lambda 시작하기” .



AWS Secret Manager란 무엇입니까?

AWS Secret Manager를 사용하면 사용자는 데이터를 보호하고 암호화할 수 있습니다. 기밀 정보 OAuth 토큰, 데이터베이스 자격 증명, API 등과 같은 애플리케이션의 기밀 정보를 '비밀' . 이러한 비밀은 승인된 기관만 액세스할 수 있으며 보안 강화를 위해 순환될 수 있습니다.



다음 문서를 참조하여 Secret Manager에 RDS 자격 증명을 저장하는 방법을 자세히 알아보세요. “Secret Manager를 사용하여 Amazon RDS 자격 증명을 저장하는 방법은 무엇입니까?”





AWS Lambda를 사용하여 AWS에서 API 비밀에 액세스하는 방법은 무엇입니까?

Lambda는 여러 서비스에 대한 기본 지원을 제공합니다. S3 버킷, API 게이트웨이 및 Secret Manager. Lambda 함수를 사용하여 구성된 비밀의 값을 얻을 수 있습니다. AWS Lambda 함수의 API 비밀을 사용하면 사용자는 AWS의 여러 서비스와 상호 작용할 수 있습니다. 이러한 API 비밀은 람다 함수를 승인하는 데에도 중요합니다.

AWS Lambda를 사용하여 AWS Secret Manager의 API 키에 액세스하려면 아래 언급된 단계를 따르십시오.



  • 1단계: API 비밀번호 생성
  • 2단계: IAM 정책 생성
  • 3단계: IAM 역할 생성
  • 4단계: Lambda 역할 생성

1단계: API 비밀번호 생성

AWS Secret Manager에서 API 키에 액세스하기 전에 먼저 다음을 배웁니다. API 비밀 생성 . 이를 위해 “비밀 관리자” 에서 서비스 AWS 관리 콘솔:

메인 콘솔 AWS Secret Manager 중 “새 비밀을 저장하세요” 단추:

에서 “비밀형” 블록, 선택 “다른 유형의 비밀” 표시된 다양한 옵션 중 다음 옵션을 선택하세요.

아래로 스크롤하여 '키/값 쌍' 섹션을 제공하고 고유한 키-값 쌍 귀하의 API 비밀을 위해. 에게 추가하다 키-값 쌍 , “행 추가” 단추:

다음은 “암호화 키” 부분. AWS는 기본 암호화 키 비밀을 위해. 그러나 사용자는 키에 대한 사용자 정의 이름을 제공할 수도 있습니다. 기본값을 유지하면서 '를 클릭하세요. 다음 ' 버튼:

이 인터페이스에서 사용자는 고유한 이름 그들의 비밀과 선택사항인 설명 여기 필드:

유지함으로써 설정은 변경되지 않음 , '를 클릭하여 계속 진행하십시오. 다음 ' 버튼:

다음은 검토 섹션. 모든 내용을 확인하려면 정보 제공되는 것은 옳은 , '를 클릭하세요. 가게 ” 버튼은 인터페이스 하단에 있습니다:

그 비밀은 성공적으로 생성되었습니다 . “를 클릭하세요. 새로고침 ” 버튼을 누르면 비밀 이름이 표시됩니다. 계기반 :

2단계: IAM 정책 생성

에게 IAM 정책을 생성하고, 접속하다 IAM 서비스 AWS 관리 콘솔에서:

로부터 IAM의 사이드바 서비스를 이용하려면 “ 정책 ' 옵션:

정책 콘솔 , “정책 만들기” 단추:

다음 문서를 참조하여 AWS IAM 정책에 대해 자세히 알아보세요. “AWS IAM 정책 예”

다음은 '권한 지정' 부분. 검색하여 선택하세요. “비밀 관리자” 서비스:

아래로 스크롤하여 “허용된 조치” 차단하다. 여기에서 다양한 액세스 수준에서 ' 읽다 ' 옵션. 선택 “모든 읽기 작업” 옵션 모든 읽기 활성화 이 정책에 대한 서비스:

아래로 스크롤 로 ' 자원 ” 섹션을 클릭하고 “ARN 추가” 옵션:

다시 탐색하여 AWS Secret Manager 대시보드 비밀 이름을 클릭하세요. “를 복사하세요. RNA ” 아래의 비밀 중 “ 비밀 ARN ” 표시되는 인터페이스의 레이블:

지금 콘솔 , 복사한 ARN을 ' RNA ' 필드:

클릭하기 전에 “ARN 추가” 버튼을 클릭하세요. '이 계정' 버튼을 눌러 동일한 계정에 비밀이 존재하는지 확인하세요. 설정을 마친 후 다음을 클릭하세요. “ARN 추가” 단추:

후에 구성 모든 설정 정책 중 '을 클릭하세요. 다음 ' 버튼:

에서 정책 세부정보 섹션 , ''에 정책 이름을 입력하세요. 정책 이름 ' 필드:

“를 클릭하세요. 정책 만들기 ' 버튼:

그만큼 정책 생성 된 성공적으로 :

3단계: IAM 역할 생성

이 섹션에서는 Lambda 함수가 암호에 액세스하는 데 필요한 권한이 포함된 IAM 역할을 생성합니다. 이를 위해 '를 클릭하십시오. 역할 IAM 역할의 사이드바에서 ' 옵션을 선택한 다음 “역할 만들기” 인터페이스의 버튼:

다음을 클릭한 후 “역할 만들기” 버튼을 누르면 다음 인터페이스가 표시됩니다. 선택 “AWS 서비스” 이 옵션을 첨부할 예정이므로 다음 옵션 중 하나를 선택하세요. IAM 역할 람다 함수를 사용하면 다음과 같습니다.

에서 “사용 사례” 섹션에서 검색해 보세요. 람다 서비스 선택하세요. 을 치다 ' 다음 계속 진행하려면 인터페이스 하단에 있는 '버튼을 누르세요.

다음 인터페이스 , 이름을 검색하세요. 정책 이름 이전에 구성한 것입니다. 표시된 결과에서 다음을 선택하세요. 정책 이름:

“를 클릭하세요. 다음 ” 버튼을 하단에 추가 진행을 위한 인터페이스:

제공 고유 식별자 당신을 위해 IAM 역할 다음 강조 표시된 필드에서:

유지 나머지 설정은 기본값으로 , “역할 만들기” 인터페이스 하단까지 아래로 스크롤하여 버튼을 클릭하세요.

역할은 되었습니다 성공적으로 만들어진:

AWS에서 IAM 역할 생성에 대해 자세히 알아보려면 다음 문서를 참조하십시오. “AWS에서 IAM 역할을 생성하는 방법” .

4단계: Lambda 함수 생성

다음 단계는 Lambda 함수를 생성하는 것입니다. 이 람다 함수에는 IAM 역할이 포함되며 실행 시 비밀 값을 얻습니다. Lambda 서비스에 액세스하려면 ' 람다 ' 검색창에 AWS 관리 콘솔 . 콘솔을 방문하려면 결과에서 서비스 이름을 클릭하세요.

Lambda 서비스의 초기 인터페이스에서 “함수 생성” 단추:

그러면 다음이 표시됩니다. “함수 생성” 상호 작용. 선택 “저자는 처음부터” 옵션을 선택하고 이름을 제공하여 계속 진행하세요. 람다 함수 강조 표시된 필드에서:

에서 런타임 필드 에서 '를 선택하세요. 파이썬 3.9 ' 환경:

아래 런타임 섹션 , 이있다 '기본 실행 역할 변경' 부분. 선택 “기존 역할을 사용하세요” 옵션을 선택한 다음 “기존 역할” 필드:

동일한 인터페이스에서 “함수 생성” 인터페이스 하단에 있는 버튼:

Lambda 함수 생성에 대해 자세히 알아보려면 다음 문서를 참조하십시오. “Pyhton 런타임으로 Lambda 함수를 생성하는 방법” .

Lambda 함수가 생성되었습니다. 다음 단계는 Lambda 함수에 코드를 제공하는 것입니다. 이 코드가 실행되면 다음 값이 표시됩니다. 비밀 관리자:

수입 JSON
수입 보토3
수입 베이스64
보토코어에서. 예외 수입 클라이언트 오류

데프 람다 핸들러 ( 이벤트 , 문맥 ) :
환경 = 이벤트 [ '환경' ]
비밀_이름 = 'shmaster19/%s/키' % 환경
지역_이름 = 'ap-남동-1'

세션 = boto3. 세션 . 세션 ( )
고객 = 세션. 고객 (
서비스 이름 = '비밀관리자' ,
지역_이름 = 지역_이름
)

노력하다 :
비밀_값_응답 = 고객. get_secret_value (
비밀 ID = 비밀_이름
)
ClientError를 오류로 제외 :
인쇄 ( 오류 )
또 다른 :
만약에 '비밀문자열' ~에 비밀_값_응답 :
비밀 = json. 잔뜩 ( 비밀_값_응답 [ '비밀문자열' ] )
반품 비밀
또 다른 :
decoded_binary_secret = base64. b64디코드 ( 비밀_값_응답 [ '시크릿바이너리' ] )
반품 decoded_binary_secret
  • JSON 가져오기: JSON 작업을 수행하는 데 사용됩니다.
  • boto3 가져오기: AWS와 Python 간의 통신을 위한 SDK입니다.
  • base64 가져오기: Base64로 바이너리 데이터에 대한 인코딩 및 디코딩 기능을 수행하는 데 사용됩니다.
  • 가져오기 클라이언트 오류: 이를 통해 사용자는 작성된 코드에서 예외를 처리할 수 있습니다.
  • 비밀_이름: 이 변수에 비밀 이름을 입력하세요. 이 비밀에는 다음이 포함되어 있습니다. '%에스' . 이는 사용자가 비슷한 형식의 여러 키를 가지고 있는 경우입니다. 예를 들어, 사용자가 두 개의 비밀을 생성한 경우 “apikey/개발자/키” 그리고 'apikey/프로드/키' . 그런 다음 '%에스' , 사용자가 ' 개발자 ”, Lambda 함수는 다음을 제공합니다. 개발 키 (apikey/dev/key) 및 그 반대의 경우도 마찬가지입니다.
  • 보토. 세션.세션(): 사용자가 서비스 클라이언트와 응답을 생성할 수 있습니다.
  • 지역_이름: AWS 보안 비밀이 구성된 지역의 이름을 제공하십시오.
  • 비밀_값_응답: 이 변수에서는 “ 클라이언트.get_secret_value ” 비밀 값을 반환하는 함수입니다.
  • Decoded_binary_secert: 비밀의 가치를 획득한 후 다음으로 더 디코딩됩니다. 기본 64 형식 .

Lambda 함수에 코드를 붙여넣은 후 ' 배포 ” 버튼을 눌러 변경 사항을 저장하고 적용합니다.

5단계: 코드 테스트

블로그의 이 섹션에서는 코드가 작동하는지 여부를 확인합니다. 이를 위해 '를 클릭하십시오. 시험 Lambda 함수에 대한 변경 사항을 성공적으로 배포한 후 ” 버튼을 클릭합니다.

다음 인터페이스에서 테스트 이름 의 이벤트 “이벤트 이름” 필드:

아래로 스크롤하여 이벤트 JSON 섹션 , '를 지정하십시오. 환경 ” 키를 입력하고 JSON 형식으로 값을 제공합니다. “ ” 키가 다음으로 전달됩니다. '%에스' . 우리가 지정한 비밀에는 “ 개발자 ” 값, “ 개발자 ” 값은 “ 환경 ” 변수입니다. 특정 비밀의 식별자가 코드에 제공되므로 Lambda 함수는 코드가 실행될 때 비밀을 식별합니다. 세부 사항을 지정한 후 '를 클릭하십시오. 구하다 ' 버튼:

이벤트가 성공적으로 생성되면 ' 시험 ' 버튼:

여기, 우리는 성공적으로 획득 지정된 비밀의 값:

이것이 이 가이드의 전부입니다.

결론

Lambda를 사용하여 Secret Manager의 API 키에 액세스하려면 먼저 API 비밀, IAM 정책, 역할 및 Lambda 함수를 생성하고 함수 코드를 실행하세요. 코드를 실행할 때 보안 암호의 식별자를 지정하여 AWS Secret Manager의 값을 얻기 위해 Lambda 함수를 호출할 수 있습니다. 이 문서에서는 AWS Lambda를 사용하여 AWS Secret Manager의 API 키에 액세스하는 방법에 대한 단계별 지침을 제공합니다.