Amazon에서 ID 기반 정책 사용 SNS - Amazon Simple Notification Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon에서 ID 기반 정책 사용 SNS

Amazon 단순 알림 서비스는 AWS Identity and Access Management (IAM) 와 통합되므로 사용자가 Amazon SNS 리소스로 수행할 AWS 계정 수 있는 Amazon SNS 작업을 지정할 수 있습니다. 정책에서 특정 주제를 지정할 수 있습니다. 예를 들어 조직의 특정 사용자에게 특정 주제에 대한 Publish 작업을 사용할 수 있는 권한을 부여하는 IAM 정책을 만들 때 변수를 사용할 수 있습니다 AWS 계정. 자세한 내용은 사용 IAM 가이드의 정책 변수를 참조하십시오.

중요

Amazon을 SNS 함께 IAM 사용한다고 해서 Amazon 사용 방식이 바뀌지는 않습니다SNS. Amazon SNS 작업에는 변경 사항이 없으며 사용자 및 액세스 제어와 관련된 새로운 Amazon SNS 작업도 없습니다.

Amazon SNS 작업 및 리소스를 다루는 정책의 예는 을 참조하십시오아마존 정책 예시 SNS.

IAM그리고 아마존 SNS 정책을 함께

IAM정책을 사용하여 Amazon SNS 작업 및 주제에 대한 사용자의 액세스를 제한합니다. IAM정책은 AWS 계정 내 사용자에게만 액세스를 제한할 수 있으며 다른 AWS 계정사용자에 대한 액세스는 제한할 수 없습니다.

특정 주제에 대한 Amazon SNS 정책을 사용하여 해당 주제를 다룰 수 있는 사용자 (예: 메시지를 게시할 수 있는 사람, 구독할 수 있는 사람 등) 를 제한합니다. Amazon SNS 정책은 다른 AWS 계정사용자 또는 귀사 내의 사용자에게 액세스 권한을 부여할 수 있습니다 AWS 계정.

사용자에게 Amazon SNS 주제에 대한 권한을 부여하려면 정책, Amazon IAM 정책 또는 둘 다를 사용할 수 있습니다. SNS 대개는 어떤 방법으로도 같은 결과를 얻을 수 있습니다. 예를 들어, 다음 다이어그램은 동일한 IAM 정책과 Amazon SNS 정책을 보여줍니다. 이 IAM 정책은 사용자 계정에서 topic_xyz라는 주제에 대한 아마존 SNS Subscribe 작업을 허용합니다. AWS 정책은 사용자 Bob과 Susan에게 첨부됩니다 (즉, Bob과 Susan은 IAM 정책에 명시된 권한을 가짐). 아마존 SNS 정책도 마찬가지로 밥과 수잔에게 topic_xyz에 Subscribe 대한 액세스 권한을 부여합니다.

IAM정책과 Amazon 정책을 비교하여 두 SNS 정책 모두 Bob과 Susan이라는 두 사용자에게 동일한 권한을 부여하여 사용자가 특정 Amazon SNS 주제를 구독할 수 있도록 허용함을 보여줍니다. AWS 계정강조된 주요 차이점은 Amazon SNS 정책은 서로 다른 사용자에게 권한을 부여할 수 있지만 IAM 정책은 AWS 계정그렇지 않다는 것입니다.
참고

이전 예제에서는 조건없는 간단한 정책을 보여줍니다. 두 정책 중 어느 쪽에도 특정 조건을 지정할 수 있으며 동일한 결과를 얻을 수 있습니다.

AWS IAM와 Amazon SNS 정책 간에는 한 가지 차이점이 있습니다. Amazon SNS 정책 시스템에서는 다른 사람에게 권한을 부여할 수 있지만 AWS 계정 IAM 정책에서는 그렇지 않다는 것입니다.

사용자의 필요에 따라 두 시스템을 함께 효과적으로 사용하면서 권한을 관리해야 합니다. 다음 예는 두 정책 시스템이 어떻게 연계하는지 보여줍니다.

예 1

이 예시에서는 IAM 정책과 Amazon SNS 정책이 모두 Bob에게 적용됩니다. 이 IAM 정책은 그에게 모든 Subscribe 주제에 대한 권한을 부여하는 반면, Amazon SNS 정책에서는 특정 주제 (topic_xyz) Publish 에 대한 사용 권한을 부여합니다. AWS 계정다음 다이어그램에서 관련 개념을 설명합니다.

IAM정책과 Amazon SNS 정책이 사용자 Bob에게 어떻게 적용되는지 보여 줍니다. 이 IAM 정책에서는 Bob이 Bob의 모든 주제를 구독할 수 있도록 허용하고 Amazon SNS 정책에서는 Bob에게 “topic_xyz”라는 특정 주제에 메시지를 게시할 권한을 부여합니다. AWS 계정다이어그램은 정책에서 부여하는 일반 권한과 특정 주제에 대해 Amazon IAM SNS 정책에서 부여하는 특정 권한 간의 차이를 강조합니다.

Bob이 AWS 계정 내 특정 주제에 대한 구독 요청을 보내면 IAM 정책에서 해당 작업을 허용하게 됩니다. Bob이 topic_xyz에 메시지를 게시해 달라는 요청을 보내면 Amazon SNS 정책에 따라 해당 작업이 허용됩니다.

예 2

여기서는 예 1(Bob에게 2가지 정책이 적용됨)을 토대로 합니다. Bob이 opic_xyz에 메시지를 게시하는데, 사실 그에게는 권한이 없습니다. 따라서 그가 주제에 게시하는 것을 아예 금지하려 합니다. 가장 쉬운 방법은 모든 주제에 대한 작업 액세스를 거부하는 IAM 정책을 추가하는 것입니다. Publish 이 세 번째 정책은 원래 topic_xyz에 게시할 수 있는 권한을 부여했던 Amazon SNS 정책을 무시합니다. 명시적인 거부가 항상 허용보다 우선하기 때문입니다 (정책 평가 로직에 대한 자세한 내용은 참조). 평가 로직 다음 다이어그램에서 관련 개념을 설명합니다.

모든 주제에 대해 “게시” 작업을 거부하는 IAM 정책을 추가하면 사용자 Bob이 특정 주제인 “topic_xyz”에 게시하도록 허용한 기존 Amazon SNS 정책을 무시할 수 있는 방법을 보여 줍니다. IAM거부 정책은 Amazon SNS 정책보다 우선하므로 Bob이 “topic_xyz”를 포함한 어떤 주제에도 게시하는 것을 사실상 방지합니다.

Amazon SNS 작업 및 리소스를 다루는 정책의 예는 을 참조하십시오아마존 정책 예시 SNS. Amazon SNS 정책 작성에 대한 자세한 내용은 Amazon 기술 설명서를 참조하십시오 SNS.

아마존 SNS 리소스 ARN 형식

Amazon의 SNS 경우 주제는 정책에서 지정할 수 있는 유일한 리소스 유형입니다. 다음은 주제에 대한 Amazon 리소스 이름 (ARN) 형식입니다.

arn:aws:sns:region:account_ID:topic_name

에 대한 ARNs 자세한 내용은 IAM사용 설명서를 참조하십시오. ARNs

다음은 ARN 123456789012에 속하는 us-east-2 MyTopic 지역에서 이름이 지정된 주제에 대한 것입니다. AWS 계정

arn:aws:sns:us-east-2:123456789012:MyTopic

Amazon이 SNS 지원하는 각 MyTopic 지역에 이름이 지정된 주제가 있는 경우 다음과 같이 주제를 지정할 수 ARN 있습니다.

arn:aws:sns:*:123456789012:MyTopic

주제 이름에 *와 ?를 사용할 수 있습니다. 예를 들어, 다음은 Bob이 생성했고 bob_라는 접두사를 붙인 모든 주제를 가리킬 수 있습니다.

arn:aws:sns:*:123456789012:bob_*

편의를 위해 주제를 생성하면 ARN Amazon에서 해당 주제를 응답으로 SNS 반환합니다.

아마존 SNS API 액션

IAM정책에서 Amazon이 SNS 제공하는 모든 작업을 지정할 수 있습니다. 그러나 ConfirmSubscriptionUnsubscribe 작업에는 인증이 필요하지 않습니다. 즉, 정책에서 해당 작업을 지정하더라도 해당 작업에 대한 사용자의 액세스는 IAM 제한되지 않습니다.

정책에서 지정하는 각 작업은 소문자 문자열의 접두사가 붙어야 합니다sns:. 예를 들어 모든 Amazon SNS 작업을 지정하려면 다음을 사용합니다sns:*. 조치 목록은 Amazon 단순 알림 서비스 API 참조를 참조하십시오.

아마존 SNS 정책 키

Amazon은 다음과 같은 AWS 광범위한 정책 키와 일부 서비스별 키를 SNS 구현합니다.

각각에서 지원하는 조건 키 목록은 사용 AWS 서비스설명서의 작업, 리소스 및 조건 키를 참조하십시오 AWS 서비스. IAM 여러 AWS 서비스개에서 사용할 수 있는 조건 키 목록은 사용 IAM설명서의 AWS 글로벌 조건 컨텍스트 키를 참조하십시오.

SNSAmazon은 다음과 같은 서비스별 키를 사용합니다. Subscribe 요청에 대한 액세스를 제한하는 정책에서 이 키를 사용합니다.

  • sns:endpoint —URL, 이메일 주소 또는 Subscribe 요청 또는 이전에 ARN 확인된 구독의 주소입니다. 특정 엔드포인트(예: *@yourcompany.com)에 대한 액세스를 제한하려면 문자열 조건과 함께 사용합니다(아마존 정책 예시 SNS 참조).

  • sns:protocol— Subscribe 요청 또는 이전에 확인한 구독의 protocol 값입니다. 특정 전송 프로토콜(예: https)에 대한 게시를 제한하려면 문자열 조건과 함께 사용합니다(아마존 정책 예시 SNS 참조).

아마존 정책 예시 SNS

이 섹션에서는 Amazon에 대한 사용자 액세스를 제어하기 위한 몇 가지 간단한 정책을 보여줍니다SNS.

참고

향후 Amazon은 정책의 명시된 목표에 따라 다음 정책 중 하나에 논리적으로 포함되어야 하는 새로운 조치를 추가할 SNS 수 있습니다.

예 1: 어떤 그룹에서 주제를 만들고 관리하도록 허용

여기서는 CreateTopic, ListTopics, SetTopicAttributes, DeleteTopic에 대한 액세스 권한을 부여하는 정책을 만듭니다.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:CreateTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:DeleteTopic"], "Resource": "*" }] }
예 2: IT 그룹에서 특정 주제에 메시지를 게시하는 것을 허용

여기서는 IT를 위한 그룹을 만들고 관심 있는 특정 주제에 대해 Publish에 액세스할 수 있는 권한을 부여하는 정책을 할당합니다.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }
예 3: 사용자에게 주제를 AWS 계정 구독할 수 있는 권한 부여

여기서는 Subscribe 작업에 대한 액세스 권한을 부여하는 정책을 만듭니다. 이를 위해 sns:Protocolsns:Endpoint 정책 키에 대한 문자열 일치 조건을 사용합니다.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:Subscribe"], "Resource": "*", "Condition": { "StringLike": { "SNS:Endpoint": "*@example.com" }, "StringEquals": { "sns:Protocol": "email" } } }] }
예 4: 파트너가 특정 주제에 메시지를 게시하는 것을 허용

Amazon SNS 정책 또는 정책을 사용하여 파트너가 특정 주제에 대해 게시하도록 허용할 수 있습니다. IAM 파트너가 정책을 가지고 있다면 Amazon SNS 정책을 사용하는 것이 더 쉬울 수 있습니다. AWS 계정하지만 AWS 보안 자격 증명을 보유한 파트너 회사 직원이라면 누구나 해당 주제에 대한 메시지를 게시할 수 있습니다. 여기서는 특정 인물(또는 애플리케이션)에게만 액세스 권한을 부여한다고 가정합니다. 이를 위해서는 파트너를 회사 내 사용자처럼 취급하고 Amazon IAM SNS 정책 대신 정책을 사용해야 합니다.

이 예시에서는 파트너 회사를 대표하는 그룹을 만들고, 액세스 권한이 필요한 파트너 회사의 특정 사용자 (또는 애플리케이션) 를 위한 사용자를 만든 다음, 사용자를 그룹에 추가합니다. WidgetCo

그런 다음 이름이 지정된 특정 주제에 대한 Publish 액세스 권한을 그룹에 부여하는 정책을 WidgetPartnerTopic첨부합니다.

또한 WidgetCo 그룹이 주제와 관련된 다른 활동을 하지 못하도록 하기 위해 다른 주제를 제외한 다른 주제를 제외한 모든 Amazon SNS 활동에 Publish 대해 권한을 거부하는 설명을 추가합니다. WidgetPartnerTopic 이는 시스템의 다른 곳에 사용자에게 SNS Amazon에 대한 광범위한 액세스 권한을 부여하는 광범위한 정책이 있는 경우에만 필요합니다.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect": "Deny", "NotAction": "sns:Publish", "NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ] }