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

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

최종 사용자 클라이언트 애플리케이션 인증

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

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

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

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

  • 기존 ID 공급자를 사용하여 사용자를 인증한 다음 인증 서비스를 AWS 보안 토큰 서비스 (STS) 와 통합하여 클라이언트를 위한 자체 자격 증명 판매 서비스를 만들 수 있습니다. STS는 IAM 역할을 맡기 위한 API를 제공합니다.

  • SAML 또는 OpenID 호환 자격 증명 공급자가 이미 있는 경우 STS 및 에 대한 호출을 추상화하는 Amazon Cognito 자격 증명 풀을 사용하는 것이 좋습니다. AWS AssumeRoleWithSAMLAssumeRoleWithWebIdentity 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가 이미 있고 사용자 지정 자격 증명 판매 서비스를 구현하거나 인증되지 않은 회의 참석자에게 채팅 액세스 권한을 부여하려는 경우 STS API를 사용할 수 있습니다.AWSAssumeRole 이를 위해서는 먼저 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/*" ] } ] }

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

사용자 ARN ${my_application_user_id} 리소스의 ChimeMessagingSampleAppUserRole정책에 있는 세션 태그를 기록해 둡니다. 이 세션 태그는 AssumeRoleAPI 호출에서 매개 변수화되어 반환되는 자격 증명을 단일 사용자의 권한으로 제한합니다.

AssumeRoleTagSessionAPI는 IAM 사용자와 같이 이미 자격 증명을 받은 IAM 개체를 사용하여 호출됩니다. 실행 역할과 같은 다른 IAM 역할로도 API를 호출할 수 있습니다.AWS Lambda 해당 IAM ID에는 호출 AssumeRoleTagSession 호출 권한이 있어야 합니다. ChimeMessagingSampleAppUserRole

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

이 예시에서는 이 역할을 역할이라고 합니다. ChimeSample AppServer

에서 STS AssumeRole API를 호출할 수 있도록 허용하는 신뢰 정책을 ChimeMessagingSampleAppUserRole 사용하여 ChimeMessagingSampleAppServerRole 를 설정해야 합니다. 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