BLOG
AWS KMS(Key Management Service)는 사용자가 AWS KMS API 요청 비율 할당량을 모니터링하고 관리할 수 있도록 API 사용 메트릭을 Amazon CloudWatch와 Service Quotas에 게시합니다. 이 기능은 AWS KMS 사용 트렌드를 이해하는데 도움이 되며 AWS KMS 사용량이 증가함에 따라 API 요청의 제약을 방지할 수 있습니다.
AWS KMS API 요청 속도 할댱량을 초과하면 “KMS 호출 속도를 초과했습니다. Call의 빈도수를 낮추십시오”라는 에러 메시지 창이 나타날 것입니다. 이러한 에러는 AWS KMS에서 관리하는 키로 데이터를 암호화 하는 AWS 서비스의 사용 증가로 인해 발생할 수 있습니다. 예를 들어 Amazon Redshift Spectrum을 사용하는 경우 ‘HTTP 응답 에러 코드: 503 메시지: AWS KMS와 관련된 작업의 요청 비율을 줄이십시오.’와 같은 에러가 발생할 수 있습니다. 이전 기록을 토대로 요청 비율 할당량에 얼마나 근접했는지 이해하려면 다음의 세 단계 작업을 수행 해야 합니다.
- AWS KMS에서 생성한 AWS CloudTrail 이벤트를 Amazon CloudWatch Logs로 전송하기
- API 요청 사용량을 측정을 위해 Amazon CloudWatch Logs Insights에서 쿼리 작성하기
- AWS 지원사례를 제출하여 할당량 증액 요청하기
이 단계를 거치면 이제 특별한 구성 없이 AWS KMS API 사용량을 확인하고 AWS 서비스 할당량 콘솔 자체 내에서 할당량 증가를 요청할 수 있게 됩니다.
그렇다면 오늘 메가존 테크블로그에선 (1) Service Quotas(서비스 할당량) 내에서 KMS API 활용도를 확인하는 방법과 (2) 제한을 걸어두기 전에 할당량 증가를 미리 요청할 수 있도록 향후 할당량을 알려주는 CloudWatch Alarm을 생성하는 방법을 보여드리겠습니다.
AWS KMS API 사용량 확인하기
배경
API 활용도란 계정에서 해당하는 API의 요청 비율 할당량에 비해 특정 API를 호출한 비율을 뜻합니다. AWS KMS의 경우 대칭 키를 사용하는 암호 운용의 기본 요청 속도는 6개의 특정 AWS 리전*에서 초당 10,000건의 요청을 소화하며, 계정의 모든 요청 클라이언트에서 집계됩니다. AWS KMS는 매 분마다 API 요청을 집계하여 CloudWatch로 전송하며, 여기서 AWS Service Quotas이 이를 소비하여 확인할 수 있습니다. Quota 사용량은 분 단위로 집계되므로, 유효 할당량은 분당 60만 건의 요청이 될 수 있습니다.
*본인이 속해있는 AWS 리전의 특정 Quotas(사용량)에 대해 궁금하시다면 ‘Request Quotas for Each AWS KMS API Operation’ 페이지를 확인해 주시기 바랍니다.
시나리오
AWS KMS를 사용하는 계정의 모든 애플리케이션이 암호 해독에 대한 10만개의 요청, 생성 데이터키 API에 대한 10만개의 요청, 암호화 API에 대한 10만개의 요청을 1분 내에 일괄 처리했다고 가정해 보겠습니다. 그 특정 분 동안 AWS KMS는 30만 건의 요청을 Amazon CloudWatch에 전송합니다. 해당 분 동안의 활용률은 할당량의 50%(30만개를 초당 만 건의 요청을 처리하는 할당량에 60초를 곱한 값인 60만개를 나눈 값)가 됩니다. Service Quotas 콘솔 내에서 최근 1시간에서 일주일까지 여러 기간 동안의 활용률을 볼 수 있습니다.
다음은 Service Quotas 내에서 AWS KMS API 활용률을 보는 방법입니다.
- AWS Management 콘솔에 로그인하십시오.
- “Service”를 선택하고 좌측 상단의 드롭다운 메뉴에서 “Service Quotas”를 검색하여 선택하십시오.
- Service Quotas 대시보드의 AWS KMS(Key Management Service) 타일을 클릭하십시오.
- “symmetric”을 검색하고 “Cryptographic operations (symmetric) request rate” 링크를 클릭하십시오.
- Monitoring 섹션에는 Decrypt,(암호 해독), Encrypt(암호화), GenerateDataKey, GenerateDataKey, GenerateDataKeyWithoutPlaintext, GenerateRandom, ReEncrypt에 대한 통합 API 활용률(%)이 표시됩니다. 이러한 모든 API는 공유된 ” Cryptographic operations (symmetric) request rate”로 그룹화됩니다.
- 그래프의 우측 모서리에서 “1w”를 선택하여 일주일 동안의 사용 추세를 볼 수 있도록 그래프를 조정하십시오.
Service Quotas 대시 보드에서는 또한 사용 가능한 AWS KMS API의 활용률을 이와 비슷한 방법으로 볼 수 있습니다.
API 활용률은 API 사용의 전반적인 추세를 알려줍니다. AWS KMS에서 보낸 요청은 분 당 집계되기 때문에 사용량이 급증하고 애플리케이션의 오류처리 로직에 exponential back off가 구축되어 있지 않다면 100% 미만의 활용률에서 여전히 조절 에러를 경험할 수 있습니다. 예를 들자면 12초와 15초 사이에 초 당 할당량을
때 사용량이 급하게 증가하고 애플리케이션의 오류처리 로직에 exponential back off가 없는 경우에도 오류가 발생할 수 있습니다. 예를 들어 사용자는 12초와 15초 사이에(3초) 초당 할당량을 초과했을 수는 있지만 해당 1분의 나머지 57초 동안은 할당량을 초과하지 않았습니다.
위의 활용률은 특정 리전의 전체 AWS계정에 걸쳐 있으므로 새로운 애플리케이션을 도입할 경우 전체 활용도에 어떤 영향을 미치는지 모니터링하고 확인할 수 있습니다. 새 애플리케이션을 프로덕션에 배포하기 전에 요청 비율 할당량 증가가 필요한 경우 AWS Service Quotas 페이지의 Details 섹션 오른쪽 상단에서 할당량 증가를 요청할 수 있습니다.
CloudWatch 알람 생성하기
지금까지 AWS Service Quotas의 모니터링 섹션에서 API 요청 비율의 과거 활용률을 보는 방법에 대해 설명하였습니다. 그렇다면 지정된 활용률 100% 도달하여 조절을 확장하여야 할 때, 그 전에 미리 경고를 받아 할당량 증가를 요청할 수 있다면 어떠실 것 같습니까?
이를 위해선 다음의 단계를 거칩니다.
- Service Quotas 콘솔에서 원하는 API를 클릭하십시오. 본 예제에서는 Cryptographic operations (symmetric) request rate을 선택하겠습니다.
- Amazon CloudWatch의 alarms섹션에서(Monitoring 섹션 아래 위치) 오른쪽 코너에 있는 Create를 선택하십시오.
- Alarm threshold 드롭 다운 메뉴에서 “80% of applied quota value”를 선택하십시오.
- 알람 제목을 “80threshold”로 입력하고 오른쪽에 있는 Create 버튼을 누르십시오.
- “80threshold”를 클릭하고 테이블에 나타나는 링크를 클릭하십시오. Amazon CloudWatch 콘솔로 이동하는 새로운 창에서 열릴 것입니다.
- 오른쪽 상단에 위치한 Edit 버튼을 누르십시오.
- Specify metrics and condition 페이지에서 기본 값으로 나둔 뒤 오른쪽에 있는 Next 버튼을 누르십시오.
- Add notification을 누른 다음 Select an SNS topic 섹션에서 Create new topic을 선택하십시오. Topic 이름으로 “SNS-Topic”을 입력하십시오. E-mail 주소를 추가하여 알람 세팅이 완료된 후 E-mail로 알람을 받아보십시오. Create topic을 선택하십시오.
- Update alarm을 클릭하십시오.
- View SNS Subscriptions을 클릭하여 SNS 구독이 되었는지 확인하십시오.
- E-mail endpoint를 선택한 뒤 Request confirmation을 선택하십시오.
- 구독 확인 e-mail을 받게 될 것입니다. 구독 확인이 완료되었다면 새로운 알람에 대해 e-mail을 받을 준비가 모두 완료된 것입니다.
alarm(경보)을 추가로 수정하길 원하신다면 creating CloudWatch alarms 페이지에서 해당 상세 내용을 참고하시기 바랍니다. 우선 알람을 설정하기 좋은 임계값으로 80%를 권장합니다. 새 애플리케이션을 테스트할 때 이 임계값으로 시작하여 일정 기간 동안 애플리케이션을 실행하고 활용도를 모니터링할 수 있습니다. 알람이 발생하면 AWS 서비스 할당량 페이지의 Details 섹션에서 사용량 증가를 미리 요청할 수 있습니다.
글을 마치며…
지금까지 AWS KMS API 요청 사용량을 보고, 애플리케이션의 AWS KMS 사용에서 가장 중요한 항목에 알람을 추가하며, 할당량 증가를 요청하는 방법에 대해 알아보았습니다. 이는 애플리케이션이 AWS KMS와 상호작용하는 방식에 있어 가시성과 제어 기능을 제공합니다.
본 게시글의 주제와 관련하여 추가 문의 사항이 있으시다면 AWS Key Management Service forums에 의견을 남겨주시기 바랍니다.
** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 개제하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달 드리도록 하겠습니다.