Amazon Chime SDK 메시징용 최종 사용자 클라이언트 애플리케이션 인증 - Amazon Chime SDK

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

Amazon Chime SDK 메시징용 최종 사용자 클라이언트 애플리케이션 인증

최종 사용자 클라이언트 애플리케이션에서 Amazon Chime SDK 메시징을 실행할 수도 있습니다. Amazon Chime SDK 메시징용 백엔드 서비스에서 SDK 직접 호출 섹션에서는 create-channel, send-channel-message, list-channel-messages와 같은 API 호출 방법을 설명합니다. 브라우저 및 모바일 애플리케이션과 같은 최종 사용자 클라이언트 애플리케이션은 이와 동일한 API 호출을 수행합니다. 또한 클라이언트 애플리케이션은 웹소켓을 통해 연결하여 자신이 멤버로 있는 채널의 메시지 및 이벤트에 대한 실시간 업데이트를 받을 수도 있습니다. 이 섹션에서는 특정 앱 인스턴스 사용자 범위가 지정된 클라이언트 애플리케이션에 IAM 자격 증명을 제공하는 방법을 다룹니다. 최종 사용자에게 이러한 자격 증명이 있으면 백엔드 서비스에서 Amazon Chime SDK 메시징용 백엔드 서비스에서 SDK 직접 호출 섹션에 나와 있는API 호출을 수행할 수 있습니다. 클라이언트 애플리케이션의 전체 데모를 보려면 https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat을 참조하세요. 클라이언트 앱이 속한 채널로부터 실시간 메시지를 수신하는 방법에 대한 자세한 내용은 WebSockets를 사용하여 Amazon Chime SDK 메시징에서 메시지 수신 섹션을 참조하세요.

최종 사용자에게 IAM 자격 증명 제공

Amazon Chime SDK 메시징은 기본적으로 AWS Identity and Access Management(IAM) 정책과 통합되어 수신 요청을 인증합니다. IAM 정책은 개별 사용자가 수행할 수 있는 작업을 정의합니다. 사용 사례에 맞게 범위가 축소된 제한된 자격 증명을 제공하도록 IAM 정책을 만들 수 있습니다. Amazon Chime SDK 메시징 사용자를 위한 정책을 생성하는 방법에 대한 자세한 내용은 Amazon Chime SDK 메시징의 IAM 역할 예시 섹션을 참조하세요.

기존 ID 공급자가 있는 경우 다음과 같은 옵션을 사용하여 기존 ID를 Amazon Chime SDK 메시징과 통합할 수 있습니다.

  • 기존 자격 증명 공급자를 사용하여 사용자를 인증한 다음 인증 서비스를 AWS Security Token Service(STS)와 통합하여 클라이언트에 대한 자체 자격 증명 벤딩 서비스를 생성할 수 있습니다. STS는 IAM 역할을 맡기 위한 API를 제공합니다.

  • 이미 SAML 또는 OpenID 호환 자격 증명 공급자가 있는 경우, AWS STS AssumeRoleWithSAMLAssumeRoleWithWebIdentity에 대한 호출을 추상화하는 Amazon Cognito ID 풀을 사용하는 것이 좋습니다. Amazon Cognito는 OpenID, SAML, Sign with Amazon, Sign with Apple과 같은 퍼블릭 자격 증명 공급자를 통합합니다.

자격 증명 공급자가 없는 경우 Amazon Cognito 사용자 풀을 시작할 수 있습니다. Amazon Chime SDK 메시징 기능과 함께 Amazon Cognito를 사용하는 방법에 대한 예는 Amazon Chime SDK 메시징을 사용하여 애플리케이션에 채팅 기능 구축을 참조하세요.

또는 AWS STS를 사용하여 자체 보안 인증 벤딩 서비스를 만들거나 자체 ID 공급자를 구축할 수 있습니다.

보안 인증 벤딩을 위해 STS 사용

ActiveDirectory LDAP와 같은 IDP가 이미 있고 사용자 지정 자격 증명 벤딩 서비스를 구현하거나 인증되지 않은 회의 참석자에게 채팅 액세스 권한을 부여하려는 경우 AWS STS AssumeRole API를 사용할 수 있습니다. 이를 위해서는 먼저 Amazon Chime SDK 메시징 SDK 역할을 생성합니다. 역할을 만드는 방법에 대한 자세한 내용은 역할을 생성하여 IAM 사용자에게 권한 위임을 참조하세요.

IAM 역할은 다음과 같이 애플리케이션에서 사용할 Amazon Chime SDK 메시징 작업에 대한 권한을 갖게 됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "chime:GetMessagingSessionEndpoint" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "chime:SendChannelMessage", "chime:ListChannelMessages", "chime:CreateChannelMembership", "chime:ListChannelMemberships", "chime:DeleteChannelMembership", "chime:CreateChannelModerator", "chime:ListChannelModerators", "chime:DescribeChannelModerator", "chime:CreateChannel", "chime:DescribeChannel", "chime:ListChannels", "chime:DeleteChannel", "chime:RedactChannelMessage", "chime:UpdateChannelMessage", "chime:Connect", "chime:ListChannelBans", "chime:CreateChannelBan", "chime:DeleteChannelBan", "chime:ListChannelMembershipsForAppInstanceUser" "chime:AssociateChannelFlow", "chime:DisassociateChannelFlow", "chime:GetChannelMessageStatus" ], "Resource": [ "{chime_app_instance_arn}/user/${aws:PrincipalTag/my_applications_user_id}", "{chime_app_instance_arn}/channel/*" ] } ] }

이 예시에서는 이 역할을 ChimeMessagingSampleAppUserRole이라고 부릅니다.

사용자 ARN 리소스의 ChimeMessagingSampleAppUserRole 정책 ${my_application_user_id}에 있는 세션 태그를 주목하세요. 이 세션 태그는 AssumeRole API 직접 호출에서 파라미터화되어 반환되는 자격 증명을 단일 사용자의 권한으로 제한합니다.

AssumeRoleTagSession API 직접 호출은 IAM 사용자와 같이 이미 인증된 IAM 엔티티를 사용하여 호출됩니다. AWS Lambda 실행 역할과 같은 다른 IAM 역할로도 API를 직접 호출할 수 있습니다. 해당 IAM ID에는 ChimeMessagingSampleAppUserRole에서 AssumeRoleTagSession을 호출할 수 있는 권한이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Resource": "arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppUserRole" } ] }

이 예시에서는 이 역할을 ChimeSampleAppServerRole이라고 부릅니다.

ChimeMessagingSampleAppServerRole에서 STS AssumeRole API를 직접 호출할 수 있도록 허용하는 신뢰 정책을 사용하여 ChimeMessagingSampleAppUserRole을 설정해야 합니다. IAM 역할과 함께 신뢰 정책을 사용하는 방법에 대한 자세한 내용은 IAM 역할로 신뢰 정책을 사용하는 방법을 참조하세요. AWS IAM 역할 콘솔을 사용하여이 정책을에 추가할 수 있습니다ChimeMessagingSampleAppUserRole. 다음 예시는 일반적인 신뢰 관계를 보여줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS":"arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppServerRole" } "Action": "sts:AssumeRole" } ] }

샘플 배포에서 Amazon EC2 인스턴스 또는 AWS Lambda 는를 사용하여 시작됩니다ChimeMessagingSampleAppServerRole. 그러면 서버가

  1. 클라이언트의 자격 증명 수신 요청에 대해 애플리케이션별 권한 부여를 수행합니다.

  2. ${aws:PrincipalTag/my_applications_user_id}를 파라미터화하는 태그를 사용하여 ChimeMessagingSampleAppUserRole에서 STS AssumeRole을 호출합니다.

  3. AssumeRole 호출에서 반환된 자격 증명을 사용자에게 전달합니다.

다음 예시는 2단계의 역할을 가정하기 위한 CLI 명령을 보여줍니다.

aws sts assume-role --role-arn arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppUserRole --role-session-name demo --tags Key=my_applications_user_id,Value=123456789