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

Boto3로 AWS Glue 보안 구성 세부 정보 조회하기 – 단계별 가이드

이 글에서는 Python의 boto3 라이브러리를 사용하여 AWS Glue Security에 등록된 특정 보안 구성(Security Configuration)의 세부 정보를 조회하는 방법을 단계별로 살펴봅니다.

문제 상황

AWS Glue Security에는 S3 암호화, CloudWatch Logs 암호화, 작업 북마크(job bookmark) 암호화 등과 같은 보안 관련 설정이 포함된 여러 보안 구성이 저장되어 있습니다. 여기서는 그중 'job-security-settings'라는 이름의 보안 구성 세부 정보를 가져오는 것을 목표로 합니다.

해결 접근 방식

1단계 – boto3와 botocore의 예외 처리 모듈(ClientError)을 임포트하여 오류를 처리할 수 있도록 준비합니다.

2단계security_name은 필수 매개변수로, 세부 정보를 조회하려는 보안 구성의 이름입니다.

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

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

5단계get_security_configuration 함수를 호출하고, security_name을 Name 파라미터로 전달합니다.

6단계 – 함수는 지정된 보안 구성의 상세 정보를 반환합니다. 반환 결과에는 구성 이름, 생성 시각(CreatedTimeStamp), S3 암호화 모드(예: SSE-KMS), KMS 키 ARN 등이 포함됩니다.

7단계 – 조회 과정에서 오류가 발생할 경우 ClientError와 일반 예외를 각각 구분하여 처리합니다.

코드 예제

아래 코드를 사용하면 지정된 보안 구성의 세부 정보를 손쉽게 조회할 수 있습니다.

import boto3
from botocore.exceptions import ClientError

def get_detail_security_configuration(security_name):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_security_configuration(Name=security_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in get_detail_security_configuration: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_detail_security_configuration: " + e.__str__())

print(get_detail_security_configuration("job-security-settings"))

실행 결과

{'SecurityConfiguration': {'Name': 'job-security-settings',
'CreatedTimeStamp': datetime.datetime(2020, 9, 24, 1, 53, 21, 265000,
tzinfo=tzlocal()), 'EncryptionConfiguration': {'S3Encryption':
[{'S3EncryptionMode': 'SSE-KMS', 'KmsKeyArn': 'arn:aws:kms:us-east1:**************:key/************-bd27-f3ec3b590d0f'}]}},
'ResponseMetadata': {'RequestId': 'b1***************-afd048ed7d07',
'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Mon, 01 Mar 2021
05:48:47 GMT', 'content-type': 'application/x-amz-json-1.1',
'contentlength': '417', 'connection': 'keep-alive', 'x-amzn-requestid':
'b1*******************-afd048ed7d07'}, 'RetryAttempts': 0}}

실행 결과를 보면 요청이 성공적으로 처리되어(HTTPStatusCode: 200) 'job-security-settings' 구성의 이름, 생성 시각, 그리고 SSE-KMS 모드로 설정된 S3 암호화 정보와 KMS 키 ARN이 정상적으로 반환된 것을 확인할 수 있습니다. 이처럼 get_security_configuration API를 활용하면 Glue ETL 작업에 적용된 암호화 및 보안 설정을 프로그램 방식으로 쉽게 검증할 수 있습니다.