Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Boto3로 AWS Secrets Manager 특정 위치의 시크릿 세부 정보 조회하기


문제 정의

Python의 boto3 라이브러리를 사용하여 AWS Secrets Manager에 저장된 특정 위치의 시크릿(비밀 값) 세부 정보를 조회하는 방법을 알아보겠습니다.

해결 접근 방식 및 알고리즘

  • 1단계: 예외 처리를 위해 boto3botocore의 예외 클래스를 임포트합니다.

  • 2단계: secret_stored_location(시크릿이 저장된 경로 또는 이름)은 필수 파라미터입니다.

  • 3단계: boto3 라이브러리를 사용해 AWS 세션을 생성합니다. 기본 프로필에 region_name이 설정되어 있는지 확인하고, 설정되어 있지 않다면 세션 생성 시 region_name을 명시적으로 전달해야 합니다.

  • 4단계: secretmanager 서비스를 위한 AWS 클라이언트를 생성합니다.

  • 5단계: describe_secret 메서드를 호출하고 secret_stored_location 값을 SecretId 파라미터로 전달합니다.

  • 6단계: 해당 시크릿의 메타데이터(ARN, 이름, 마지막 변경/접근 날짜, 버전 스테이지 등)가 반환됩니다.

  • 7단계: 시크릿 정보 조회 과정에서 오류가 발생하면 ClientError 및 일반 예외를 처리합니다.

예제 코드

아래 코드를 사용하면 AWS Secrets Manager에서 특정 시크릿의 세부 정보를 가져올 수 있습니다.

import boto3
from botocore.exceptions import ClientError

def get_secret_details(secret_stored_location):
    session = boto3.session.Session()
    secrets_client = session.client('secretmanager')
    try:
        response = secrets_client.describe_secret(SecretId=secret_stored_location)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in get_secret_details: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_secret_details: " + e.__str__())

a = get_secret_details('/secrets/aws')
print(a)

출력 결과

{'ARN': 'arn:aws:secretsmanager:us-east-1:***************:secret:/secrets/aws-wr1Aj6', 'Name': '/secrets/aws', 'LastChangedDate': datetime.datetime(2021, 4, 3, 17, 6, 57, 601000, tzinfo=tzlocal()), 'LastAccessedDate': datetime.datetime(2021, 4, 3, 5, 30, tzinfo=tzlocal()), 'VersionIdsToStages': {'f5308bed-7c23-4d47-a32b-8f2a5f044e53': ['AWSCURRENT'], 'fcdc1b5b-2a35-4d12-9d84-65d529651d2e': ['AWSPREVIOUS']}, 'ResponseMetadata': {'RequestId': 'b32fe48d**************ab', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 03 Apr 2021 09:40:48 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '197', 'connection': 'keep-alive', 'x-amzn-requestid': '*********************************'}, 'RetryAttempts': 0}}

참고 사항

describe_secret은 시크릿 자체의 값이 아니라 메타데이터만 반환한다는 점에 유의하세요. ARN, 이름, 설명, 태그, 버전 스테이지(AWSCURRENT, AWSPREVIOUS 등), 마지막 변경 및 접근 날짜 같은 정보를 확인할 때 유용합니다.

만약 실제 암호화된 시크릿 이 필요하다면 get_secret_value 메서드를 사용해야 합니다. 또한 이 코드를 실행하려면 해당 IAM 사용자 또는 역할에 secretsmanager:DescribeSecret 권한이 부여되어 있어야 하며, AWS 자격 증명(액세스 키, 시크릿 키)이 사전에 구성되어 있어야 합니다.