경보 변경 시 사용자에게 알림
이 섹션에서는 AWS 사용자 알림 또는 Amazon Simple Notification Service를 사용하여 사용자에게 경보 변경 사항을 알리는 방법을 설명합니다.
AWS 사용자 알림 설정
AWS 사용자 알림을 사용하여 CloudWatch 경보 상태 변경 및 구성 변경 이벤트에 대한 알림을 수신할 전송 채널을 설정할 수 있습니다. 이벤트가 지정한 규칙과 일치하면 알림을 받습니다. 이메일, AWS Chatbot 채팅 알림 또는 AWS 콘솔 모바일 애플리케이션 푸시 알림 등 여러 채널을 통해 이벤트에 대한 알림을 받을 수 있습니다. 콘솔 알림 센터
AWS 사용자 알림을 사용하여 생성하는 알림 구성은 대상 경보 상태별로 구성할 수 있는 작업 수 제한에 포함되지 않습니다. AWS 사용자 알림은 특정 경보나 패턴을 허용 목록에 추가하거나 거부하는 고급 필터를 지정하지 않는 한 Amazon EventBridge로 전송되는 이벤트와 일치하므로 계정 및 선택한 리전의 모든 경보에 대한 알림을 전송합니다.
다음 고급 필터의 예에서는 ServerCpuTooHigh
라는 경보의 경보 상태가 OK에서 ALARM으로 변경된 경우와 일치합니다.
{ "detail": { "alarmName": ["ServerCpuTooHigh"], "previousState": { "value": ["OK"] }, "state": { "value": ["ALARM"] } } }
EventBridge 이벤트에서 경보가 게시한 모든 속성을 사용하여 필터를 생성할 수 있습니다. 자세한 내용은 경보 이벤트 및 EventBridge 단원을 참조하십시오.
Amazon SNS 알림 설정
Amazon Simple Notification Service를 사용하여 모바일 문자 메시지(SMS) 및 이메일 메시지를 포함하여 애플리케이션 간(A2A) 메시지와 애플리케이션 대 사람(A2P) 메시지를 모두 보낼 수 있습니다. 자세한 내용은 Amazon SNS 이벤트 대상을 참조하세요.
경보가 취할 수 있는 모든 상태에 대해 SNS 주제에 메시지를 보내도록 경보를 구성할 수 있습니다. 특정 경보의 상태와 관련해 구성하는 모든 Amazon SNS 주제는 해당 경보 및 상태에 구성할 수 있는 작업 수 제한에 포함됩니다. 계정의 모든 경보에서 동일한 Amazon SNS 주제로 메시지를 보낼 수 있으며 애플리케이션(A2A) 및 사람(A2P) 소비자 모두에게 동일한 Amazon SNS 주제를 사용할 수 있습니다. 이 구성은 경보 수준에서 이루어지므로 구성한 경보만 선택한 Amazon SNS 항목으로 메시지를 전송합니다.
먼저, 주제를 생성한 다음 구독합니다. 선택적으로 테스트 메시지를 주제에 게시할 수 있습니다. 예시는 AWS Management Console을 사용하여 Amazon SNS 주제 설정을 확인하세요. 또는 자세한 내용은 Amazon SNS 시작하기를 참조하세요.
또는 AWS Management Console을 사용하여 CloudWatch 경보를 만들려는 경우 경보를 만들 때 주제를 만들 수 있으므로 이 절차를 건너뛰어도 됩니다.
CloudWatch 경보를 생성할 때 경보가 입력하는 모든 대상 상태에 대한 작업을 추가할 수 있습니다. 알림을 받으려는 상태에 대한 Amazon SNS 알림을 추가하고 이전 단계에서 만든 Amazon SNS 주제를 선택하여 경보가 선택한 상태에 진입할 때 이메일 알림을 보냅니다.
참고
Amazon SNS 주제를 생성할 때 해당 주제를 표준 주제 또는 FIFO 주제로 선택합니다. CloudWatch는 두 가지 유형의 주제에 대한 모든 경보 알림을 게시하도록 보장합니다. 그러나 FIFO 주제를 사용하더라도 CloudWatch가 순서에 맞지 않게 알림을 주제로 보내는 경우가 드물게 있습니다. FIFO 주제를 사용하는 경우 경보는 경보 알림의 메시지 그룹 ID를 경보의 ARN 해시로 설정합니다.
혼동된 대리자 보안 문제 방지
혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. AWS에서는 교차 서비스 가장으로 인해 혼동된 대리자 문제가 발생할 수 있습니다. 교차 서비스 가장은 한 서비스(호출하는 서비스)가 다른 서비스(호출되는 서비스)를 직접적으로 호출할 때 발생할 수 있습니다. 직접적으로 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 보안 주체를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다.
Amazon SNS가 리소스에 다른 서비스를 제공하는 권한을 제한하려면 리소스 정책에서 aws:SourceArn
, aws:SourceAccount
, aws:SourceOrgID
및 aws:SourceOrgPaths
글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. aws:SourceArn
을 사용하면 하나의 리소스만 교차 서비스 액세스 권한과 연결됩니다. aws:SourceAccount
를 사용하면 해당 계정의 모든 리소스가 교차 서비스 사용 권한과 연결됩니다. aws:SourceOrgID
를 사용하면 조직 내 모든 계정의 모든 리소스가 교차 서비스 사용 권한과 연결될 수 있습니다. aws:SourceOrgPaths
를 사용하면 AWS Organizations 경로 내 계정의 모든 리소스가 교차 서비스 사용 권한과 연결됩니다. 경로 사용 및 이해에 대한 자세한 내용은 AWS Organizations 엔터티 경로 이해하기 섹션을 참조하세요.
혼동된 대리인 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 aws:SourceArn
글로벌 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모르거나 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드 문자(*
)를 포함한 aws:SourceArn
글로벌 조건 컨텍스트 키를 사용합니다. 예: arn:aws:
.servicename
:*:123456789012
:*
만약 aws:SourceArn
값에 Amazon S3 버킷 ARN과 같은 계정 ID가 포함되어 있지 않은 경우, 권한을 제한하려면 두 aws:SourceAccount
및 aws:SourceArn
를 모두 사용해야 합니다.
혼동된 대리자 문제로부터 보호하려면 리소스 기반 정책에서 리소스의 조직 ID 또는 조직 경로와 함께 aws:SourceOrgID
또는 aws:SourceOrgPaths
전역 조건 컨텍스트 키를 사용하세요. aws:SourceOrgID
또는 aws:SourceOrgPaths
키가 포함된 정책에는 올바른 계정이 자동으로 포함되며 조직에서 계정을 추가, 제거 또는 이동할 때 정책을 수동으로 업데이트할 필요가 없습니다.
aws:SourceArn
의 값은 알림을 보내는 경보의 ARN이어야 합니다.
다음 예제에서는 CloudWatch에서 aws:SourceArn
및 aws:SourceAccount
전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여줍니다.
{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } }] }
경보 ARN에 ASCII가 아닌 문자가 포함된 경우 aws:SourceAccount
전역 조건 키만 사용하여 권한을 제한합니다.
AWS Management Console을 사용하여 Amazon SNS 주제 설정
먼저, 주제를 생성한 다음 구독합니다. 선택적으로 테스트 메시지를 주제에 게시할 수 있습니다.
SNS 주제를 생성하려면
https://console.aws.amazon.com/sns/v3/home
에서 Amazon SNS 콘솔을 엽니다. -
Amazon SNS 대시보드의 [일반 작업(Common actions)]에서 [주제 생성(Create Topic)]을 선택합니다.
-
새로운 주제 생성 대화 상자의 주제 이름에 주제 이름(예:
my-topic
)을 입력합니다. -
주제 생성을 선택합니다.
-
다음 태스크에 대한 [주제 ARN(Topic ARN)]을 복사합니다(예를 들어 arn:aws:sns:us-east-1:111122223333:my-topic).
SNS 주제를 구독하려면
https://console.aws.amazon.com/sns/v3/home
에서 Amazon SNS 콘솔을 엽니다. -
탐색 창에서 구독과 구독 생성을 선택합니다.
-
구독 생성 대화 상자의 주제 ARN에서 이전 작업에서 생성한 주제 ARN을 붙여 넣습니다.
-
프로토콜에서 이메일을 선택합니다.
-
엔드포인트에 알림을 받는 데 사용할 수 있는 이메일 주소를 입력한 다음 구독 생성을 선택합니다.
-
이메일 애플리케이션에서 AWS 알림에서 보낸 메시지를 연 다음, 구독을 확인합니다.
웹 브라우저에 Amazon SNS의 확인 응답이 표시됩니다.
SNS 주제에 테스트 메시지를 게시하려면
-
https://console.aws.amazon.com/sns/v3/home
에서 Amazon SNS 콘솔을 엽니다. -
탐색 창에서 주제를 선택합니다.
-
주제 페이지에서 주제를 선택하고 주제 게시를 선택합니다.
-
메시지 게시 페이지의 제목에 메시지에 대한 제목 줄을 입력하고 메시지에 간단한 메시지를 입력합니다.
-
메시지 게시를 선택합니다.
-
해당 메시지를 받았는지 이메일을 확인합니다.
AWS CLI를 사용하여 SNS 주제 설정
먼저 SNS 주제를 생성한 다음, 해당 주제에 직접 메시지를 게시해서 제대로 구성이 되었는지 테스트합니다.
SNS 주제를 설정하려면
-
아래와 같이 create-topic 명령을 사용하여 주제를 생성합니다.
aws sns create-topic --name
my-topic
Amazon SNS는 다음 형식의 주제 ARN을 반환합니다.
{ "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic" }
-
subscribe 명령을 사용하여 구독 이메일 주소를 주제에 연결합니다. 구독 요청이 성공하면 구독 확인 이메일 메시지를 받게 됩니다.
aws sns subscribe --topic-arn arn:aws:sns:
us-east-1
:111122223333
:my-topic
--protocol email --notification-endpointmy-email-address
Amazon SNS는 다음을 반환합니다.
{ "SubscriptionArn": "pending confirmation" }
-
이메일 애플리케이션에서 AWS 알림에서 보낸 메시지를 연 다음, 구독을 확인합니다.
웹 브라우저에 Amazon Simple Notification Service의 확인 응답이 표시됩니다.
-
list-subscriptions-by-topic 명령을 사용하여 구독을 확인합니다.
aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:
us-east-1
:111122223333
:my-topic
Amazon SNS는 다음을 반환합니다.
{ "Subscriptions": [ { "Owner": "111122223333", "Endpoint": "me@mycompany.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic", "SubscriptionArn": "arn:aws:sns:us-east-1:111122223333:my-topic:64886986-bf10-48fb-a2f1-dab033aa67a3" } ] }
-
(선택 사항) publish 명령을 사용하여 해당 주제로 테스트 메시지를 게시합니다.
aws sns publish --message "Verification" --topic arn:aws:sns:
us-east-1
:111122223333
:my-topic
Amazon SNS는 다음을 반환합니다.
{ "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d" }
-
해당 메시지를 받았는지 이메일을 확인합니다.
경보의 상태 변경 시 Amazon SNS 알림 스키마
이 섹션에는 경보의 상태가 변경될 때 Amazon SNS 주제로 전송되는 알림의 스키마가 나열되어 있습니다.
지표 경보의 상태 변경 시 스키마
{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "AlarmConfigurationUpdatedTimestamp": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OldStateValue": "string", "OKActions": ["string"], "AlarmActions": ["string"], "InsufficientDataActions": ["string"], "Trigger": { "MetricName": "string", "Namespace": "string", "StatisticType": "string", "Statistic": "string", "Unit": "string or null", "Dimensions": [ { "value": "string", "name": "string" } ], "Period": "integer", "EvaluationPeriods": "integer", "DatapointsToAlarm": "integer", "ComparisonOperator": "string", "Threshold": "number", "TreatMissingData": "string", "EvaluateLowSampleCountPercentile": "string or null" } }
복합 경보의 상태 변경 시 스키마
{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OKActions": [String], "AlarmActions": [String], "InsufficientDataActions": [String], "OldStateValue": "string", "AlarmRule": "string", "TriggeringChildren": [String] }