Amazon Q Developer 사용을 Audit 할 수 있는 방법

3분 분량
콘텐츠 수준: 중급
0

본 기사에서는 Amazon Q Developer에 액세스한 각 사용자가 IDE 상에서 수행한 코드 생성 및 분석 등의 활동 기록을 CloudTrail을 통해 Audit 할 수 있는 방법에 대해 소개합니다.

Amazon Q Developer는 생성형 AI 기반 대화형 어시스턴트로, IDE 상에서 Amazon Q와의 채팅을 통해 새로운 코드 생성, 인라인 코드 완성, 코드 보안성 취약 스캔, 디버깅 및 최적화 등 소프트웨어 개발과 관련된 지원을 받을 수 있습니다. IDE 상에서 Amazon Q Developer의 지원을 받는 자세한 가이드는 [1] 문서를 참고하실 수 있으며, 본 기사에서는 Audit 과 관련된 내용을 집중적으로 다뤄보도록 하겠습니다.

기본적으로 CloudTrail을 통해 어떤 사용자가 Amazon Q Developer를 통해 코드 생성, 보안 스캔, 코드 변환 등을 수행했는지 확인이 가능합니다. Amazon Q Developer에서 지원하는 모든 API 목록을 [2] 문서에서 확인하실 수 있습니다.

Amazon Q Developer 지원 API 목록

하지만 이러한 API들은 AWS 리소스 자체를 변경하는 관리 이벤트(Management events)가 아니라 리소스 내부에서 발생하는 데이터 이벤트(Data events) 범주에 속하기 때문에 CloudTrail을 통해 API를 조회하려면 별도의 설정을 해주어야 합니다. CloudTrail [3] 문서를 보시면 관리 이벤트는 AWS 계정의 리소스에 대해 수행된 컨트롤 플레인 영역 작업인 반면, 데이터 이벤트는 리소스 내부에서 수행된 데이터 플레인 작업이고 대량의 이벤트가 발생한다고 되어 있습니다. 이러한 데이터 이벤트의 예시로 S3 버킷 객체에 대한 작업, AWS Lambda 함수 실행(Invoke) 작업 등이 있습니다.

Amazon Q Developer 관련 데이터 이벤트를 조회하기 위해서는 별도의 Trail을 생성하여 S3에 저장한 후 Athena를 통해 쿼리하여 조회하거나, CloudTrail Event Data Store에 저장한 후 CloudTrail Lake를 통해 쿼리하여 조회할 수 있습니다. Amazon Q Developer에서 발생한 이벤트를 Audit하기 전 먼저 CloudTrail Event Data Store를 생성해 보겠습니다. 이와 관련된 가이드 문서는 [4]를 참고하실 수 있습니다.

CloudTrail 콘솔로 접속하여 레이크 > 이벤트 데이터 스토어 > 이벤트 데이터 스토어 생성을 클릭합니다. 이벤트 데이터 저장소 이름과 보존 기간을 선택한 후 다음을 클릭하면 아래와 같은 이벤트 선택 페이지가 나타납니다. 데이터 이벤트를 선택한 후 데이터 이벤트 유형에 ‘CodeWhisperer’를 지정합니다. ‘codewhisperer'는 Amazon Q Developer의 레거시 이름입니다.

CloudTrail 이벤트 데이터 스토어 생성

다음 버튼을 눌러 데이터 이벤트 스토어를 생성한 후 IDE에서 Amazon Q Developer를 통해 코드를 생성해 보겠습니다.

현재 개발 중인 프로젝트를 컨테이너 환경에서 배포하도록 결정하였으나, 아직 Dockerfile이 작성되지 않은 상태라 가정해 보겠습니다. 아래와 같이 Amazon Q와의 대화를 통해 개발 중인 소스코드에 알맞은 Dockerfile 구현에 대한 제안을 받으려고 합니다.

Amazon Q에 소스코드에 맞는 Dockerfile 생성 요청

Amazon Q에서 제안한 코드를 검토한 후 코드를 생성합니다.

Amazon Q에서 제안한 코드 생성

이후 Insert Code 버튼을 누르면 다음과 같이 개발 프로젝트에 Amazon Q에서 생성한 Dockerfile과 컨테이너 생성 시 실행되는 스크립트 entrypoint.sh가 추가된 것을 확인할 수 있습니다.

Amazon Q에서 생성한 코드 추가

이후 위의 사용내역을 CloudTrail에서 확인하기 위해 CloudTrail 콘솔 > 레이크 > 쿼리로 이동합니다. 모든 데이터 이벤트를 최신 발생 순으로 조회하기 위해서는 아래와 같은 쿼리를 실행하시면 됩니다. 전체 파라미터를 조회하기 위해서는 SELECT *를 지정하시면 되지만, 본 기사에서는 데이터의 가독성을 위해 사용자 정보, 이벤트 발생 시간, 이벤트 이름만 조회해 보도록 하겠습니다.

SELECT userIdentity.onbehalfof as user, userAgent, eventTime, eventName, eventSource
FROM <Event Data Store ID>
WHERE eventSource = 'codewhisperer.amazonaws.com'
order by eventTime desc

쿼리 실행 시 결과를 S3에 저장을 설정하였고, 저장된 실행 결과 csv 파일을 열어보면 아래와 같습니다.

CloudTrail Lake 쿼리 실행 결과

User 정보를 통해 Amazon Q Developer에 액세스한 사용자 정보를 IAM Identity Center User ID로 파악할 수 있고, userAgent를 통해 어떤 Client를 통해 실행되었는지도 확인하실 수 있습니다. 위에서 보시는 것처럼 IDE(IntelliJ)에 설치된 Amazon Q 플러그인을 통해 코드 구현 계획을 생성하고 그에 따라 코드를 생성한 내역이 확인됩니다. 이외에도 주기적으로 원격 Telemetry 정보가 전송된 내역들도 조회해 보실 수 있습니다.


참고:

[1] https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE.html

[2] https://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/security_iam_permissions.html#other-permissions

[3] https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/cloudtrail-events.html

[4] https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/query-event-data-store-cloudtrail.html

profile pictureAWS
지원 엔지니어
게시됨 3달 전1087회 조회
댓글 없음

관련 콘텐츠