View a markdown version of this page

Amazon Connect Health의 자격 증명 및 액세스 관리 - Amazon Connect Health

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

Amazon Connect Health의 자격 증명 및 액세스 관리

AWS Identity and Access Management(IAM)는 AWS 리소스에 대한 관리자의 액세스를 안전하게 제어하는 데 도움이 되는 AWS 서비스입니다. IAM 관리자는 Amazon Connect Health 리소스를 사용할 수 있는 인증(로그인) 및 권한(권한 있음)을 받을 수 있는 사용자를 제어합니다. IAM은 추가 비용 없이 사용할 수 있는 AWS 서비스입니다.

대상

AWS Identity and Access Management(IAM)를 사용하는 방법은 Amazon Connect Health에서 수행하는 작업에 따라 다릅니다.

서비스 사용자 - Amazon Connect Health 서비스를 사용하여 작업을 수행하는 경우 필요한 자격 증명과 권한을 관리자가 제공합니다. 작업에 더 많은 Amazon Connect Health 기능을 사용하면 추가 권한이 필요할 수 있습니다. 액세스 권한 관리 방법을 이해하면 관리자에게 올바른 권한을 요청하는 데 도움이 됩니다.

서비스 관리자 - 회사에서 Amazon Connect Health 리소스를 책임지고 있는 경우 Amazon Connect Health에 대한 전체 액세스 권한을 가지고 있을 것입니다. 서비스 관리자는 서비스 사용자가 액세스해야 하는 Amazon Connect Health 기능과 리소스를 결정합니다. 그런 다음 IAM 관리자에게 요청을 제출하여 서비스 사용자의 권한을 변경해야 합니다. 이 페이지의 정보를 검토하여 IAM의 기본 개념을 이해하세요.

IAM 관리자 - IAM 관리자인 경우 Amazon Connect Health에 대한 액세스를 관리하는 정책을 작성하는 방법에 대한 세부 정보를 알고 싶을 수 있습니다.

ID를 통한 인증

인증은 ID 자격 증명을 사용하여 AWS에 로그인하는 방식입니다. AWS 계정 루트 사용자, IAM 사용자 또는 IAM 역할을 수임하여 인증(AWS에 로그인)되어야 합니다.

프로그래밍 방식 액세스를 위해 AWS는 자격 증명을 사용하여 요청에 암호화 방식으로 서명하는 SDK 및 CLI를 제공합니다. AWS 도구를 사용하지 않는 경우 요청에 직접 서명해야 합니다. Amazon Connect Health는 인바운드 API 요청을 인증하기 위한 프로토콜인 서명 버전 4를 지원합니다. 요청 인증에 대한 자세한 내용은 IAM 사용 설명서API 요청에 대한 AWS 서명 버전 4를 참조하세요.

사용하는 인증 방법에 상관 없이 추가 보안 정보를 제공해야 할 수도 있습니다. 예를 들어, AWS는 멀티 팩터 인증(MFA)을 사용하여 계정의 보안을 강화하는 것을 권장합니다.

AWS 계정 루트 사용자 - AWS 계정을 생성할 때 계정의 모든 AWS 서비스 및 리소스에 대한 완전한 액세스 권한이 있는 하나의 로그인 자격 증명으로 시작합니다. 이 자격 증명을 AWS 계정 루트 사용자라고 합니다. 일상적인 작업에 루트 사용자를 사용하지 마세요. 루트 사용자 자격 증명을 보호하고 루트 사용자만 수행할 수 있는 작업을 수행하는 데 사용합니다.

IAM 사용자 및 그룹 - IAM 사용자는 AWS 계정 내에서 단일 사용자 또는 애플리케이션에 대한 특정 권한이 있는 자격 증명입니다. 가능하면 암호 및 액세스 키와 같은 장기 자격 증명이 있는 IAM 사용자를 생성하는 대신 임시 자격 증명을 사용하는 것이 좋습니다.

IAM 역할 - IAM 역할은 특정 권한이 있는 AWS 계정 내의 자격 증명입니다. IAM 사용자와 유사하지만, 특정 개인과 연결되지 않습니다. 역할을 전환하여 AWS 관리 콘솔에서 IAM 역할을 임시로 수임할 수 있습니다.

페더레이션 자격 증명 - 가장 좋은 방법은 관리자 액세스가 필요한 사용자를 포함한 인간 사용자가 자격 증명 공급자와의 페더레이션을 사용하여 임시 자격 증명을 사용하여 AWS 서비스에 액세스해야 하는 것입니다. 페더레이션 자격 증명은 엔터프라이즈 사용자 디렉터리, 웹 자격 증명 공급자, AWS Directory Service, Identity Center 디렉터리 또는 자격 증명 소스를 통해 제공된 자격 증명을 사용하여 AWS 서비스에 액세스하는 모든 사용자의 사용자입니다.

정책을 사용하여 액세스 관리

정책을 생성하고 AWS ID 또는 리소스에 연결하여 AWS에서 액세스를 제어합니다. 정책은 자격 증명 또는 리소스에 연결될 때 해당 권한을 정의하는 AWS의 객체입니다. AWS는 보안 주체(사용자 또는 역할)가 요청할 때 이러한 정책을 평가합니다. 정책에서 권한은 요청이 허용되거나 거부되는 지를 결정합니다. 대부분의 정책은 AWS에 JSON 문서로 저장됩니다.

자격 증명 기반 정책 - 자격 증명 기반 정책은 IAM 사용자, 사용자 그룹 또는 역할과 같은 자격 증명에 연결할 수 있는 JSON 권한 정책 문서입니다. 이러한 정책은 사용자 및 역할이 어떤 리소스와 어떤 조건에서 어떤 작업을 수행할 수 있는지를 제어합니다.

리소스 기반 정책 - 리소스 기반 정책은 리소스에 연결하는 JSON 정책 문서입니다. 리소스 기반 정책의 예제는 IAM 역할 신뢰 정책과 Amazon S3 버킷 정책입니다.

기타 정책 유형 - AWS는 권한 경계, 서비스 제어 정책(SCPs), 리소스 제어 정책(RCPs) 및 세션 정책을 포함하여 덜 일반적인 추가 정책 유형을 지원합니다.

Amazon Connect Health에서 IAM을 사용하는 방법

Amazon Connect Health는 IAM 자격 증명 기반 정책을 사용하여 Connect Health 작업 및 리소스에 대한 액세스를 제어합니다. 관리자는 최소 권한 원칙을 적용하여 각 역할에 필요한 권한만 부여해야 합니다.

Amazon Connect Health는 다음과 같은 IAM 기능을 지원합니다.

  • 자격 증명 기반 정책: 예

  • 리소스 기반 정책: 아니요

  • 정책 작업: 예(health-agent:*)

  • 정책 리소스: 예(도메인, 에이전트, 통합 ARNs)

  • 정책 조건 키: 예(aws:RequestTag, aws:ResourceTag, aws:TagKeys)

  • ABAC(속성 기반 액세스 제어): 예

Amazon Connect Health는 도메인 및 에이전트 관련 작업에 대한 IAM 태그를 통해 속성 기반 액세스 제어(ABAC)를 지원합니다. 리소스 수준 권한을 적용하여 특정 도메인, 에이전트 및 통합에 대한 액세스를 제한할 수 있습니다. 관리자가 AWS 콘솔을 통해 Amazon Connect Health에 액세스하는 데 필요한 최소 IAM 권한이 있습니다.

읽기 전용 콘솔 정책:

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:ListDomains", "health-agent:GetDomain", "health-agent:ListIntegrations", "health-agent:ListAgents" ], "Resource": "*" } ] }

전체 액세스 콘솔 정책:

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:GetTemplate", "cloudformation:ListStacks", "connect:AssociatePhoneNumberContactFlow", "connect:ClaimPhoneNumber", "connect:DescribeInstance", "connect:DescribePhoneNumber", "connect:ListInstances", "connect:ListPhoneNumbersV2", "connect:ReleasePhoneNumber", "connect:SearchAvailablePhoneNumbers", "connect:TagResource", "connect:UpdatePhoneNumber", "connect:UpdatePhoneNumberMetadata", "ds:DescribeDirectories", "health-agent:CreateAgent", "health-agent:CreateDomain", "health-agent:CreateIntegration", "health-agent:DeleteAgent", "health-agent:DeleteDomain", "health-agent:DeleteIntegration", "health-agent:GenerateMedicalCodes", "health-agent:GetAgent", "health-agent:GetDomain", "health-agent:GetIntegration", "health-agent:GetPatientInsightsJob", "health-agent:ListAgents", "health-agent:ListDomains", "health-agent:ListIntegrations", "health-agent:PublishAgent", "health-agent:StartPatientInsightsJob", "health-agent:UpdateAgent", "health-agent:UpdateIntegration", "healthlake:ReadResource", "healthlake:SearchEverything", "healthlake:SearchWithGet", "healthlake:SearchWithPost", "iam:AttachRolePolicy", "iam:CreatePolicy", "iam:CreatePolicyVersion", "iam:CreateRole", "iam:CreateServiceLinkedRole", "iam:DeletePolicyVersion", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:PutRolePolicy", "kms:DescribeKey", "kms:ListAliases", "kms:ListKeys", "lambda:AddPermission", "lambda:CreateFunction", "lambda:GetFunction", "lex:BuildBotLocale", "lex:CreateBot", "lex:CreateBotAlias", "lex:CreateBotLocale", "lex:CreateBotVersion", "lex:CreateCustomVocabulary", "lex:CreateIntent", "lex:CreateResourcePolicy", "lex:CreateSlot", "lex:CreateSlotType", "lex:CreateUploadUrl", "lex:DeleteBotLocale", "lex:DeleteCustomVocabulary", "lex:DeleteIntent", "lex:DeleteSlot", "lex:DeleteSlotType", "lex:DescribeBot", "lex:DescribeBotAlias", "lex:DescribeBotLocale", "lex:DescribeBotVersion", "lex:DescribeImport", "lex:ListBotLocales", "lex:ListBots", "lex:ListTagsForResource", "lex:StartImport", "lex:TagResource", "lex:UpdateBot", "lex:UpdateBotAlias", "lex:UpdateBotLocale", "lex:UpdateCustomVocabulary", "lex:UpdateIntent", "lex:UpdateResourcePolicy", "lex:UpdateSlot", "lex:UpdateSlotType", "organizations:DescribeOrganization", "organizations:ListAccounts", "s3:GetObject", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:PutObject", "sso:CreateApplication", "sso:CreateApplicationAssignment", "sso:CreateInstance", "sso:ListDirectoryAssociations", "sso:ListInstances", "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationGrant", "sso-directory:CreateUser", "sso-directory:SearchUsers" ], "Resource": "*" } ] }

Amazon Connect Health의 자격 증명 기반 정책 예제

기본적으로 사용자 및 역할에는 Amazon Connect Health 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management Console, AWS CLI 또는 AWS API를 사용하여 작업을 수행할 수 없습니다. 사용자에게 사용자가 필요한 리소스에서 작업을 수행할 권한을 부여하려면 IAM 관리자가 IAM 정책을 생성하면 됩니다. 그런 다음 관리자가 IAM 정책을 역할에 추가하고, 사용자가 역할을 맡을 수 있습니다.

이러한 예제 JSON 정책 문서를 사용하여 IAM 자격 증명 기반 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서의 JSON 탭에서 정책 생성을 참조하세요.

정책 모범 사례:

  • AWS 관리형 정책을 시작하고 최소 권한으로 이동합니다.

  • 최소 권한 적용 - IAM 정책으로 권한을 설정할 때 작업을 수행하는 데 필요한 권한만 부여합니다.

  • IAM 정책의 조건을 사용하여 액세스를 추가로 제한합니다.

  • IAM Access Analyzer를 사용하여 IAM 정책을 검증하여 안전하고 기능적인 권한을 보장합니다.

  • 다중 인증(MFA)이 필요합니다.

예제 1: 특정 도메인에 대한 전체 액세스 허용

다음 정책은 특정 Amazon Connect Health 도메인 및 해당 통합에 대한 전체 액세스 권한을 부여합니다.

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:*" ], "Resource": [ "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>", "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/integration/*" ] } ] }

예제 2: 사용자가 주변 설명서 세션을 시작하고 볼 수 있도록 허용

다음 정책은 사용자가 주변 설명서 세션을 시작하고 검색할 수 있도록 허용합니다.

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:StartMedicalScribeListeningSession", "health-agent:GetMedicalScribeListeningSession" ], "Resource": "*" } ] }

예제 3: 주변 설명서에 대한 읽기 전용 액세스

다음 정책은 주변 설명서 세션에 대한 읽기 전용 액세스 권한을 부여합니다.

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:GetMedicalScribeListeningSession", "health-agent:ListMedicalScribeListeningSessions" ], "Resource": "*" } ] }

예제 4: 모든 Connect Health 리소스에 대한 전체 액세스

다음 정책은 모든 Amazon Connect Health 리소스에 대한 전체 액세스 권한을 부여합니다.

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": "health-agent:*", "Resource": "*" } ] }

예제 5: 파괴적 작업에 대한 거부가 있는 읽기 전용 액세스

다음 정책은 삭제 작업을 명시적으로 거부하면서 도메인 및 에이전트에 대한 읽기 전용 액세스 권한을 부여합니다.

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:GetDomain", "health-agent:ListAgents", "health-agent:GetAgent" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "health-agent:DeleteDomain", "health-agent:DeleteAgent" ], "Resource": "*" } ] }

예제 6: IAM 사용자가 자신의 권한을 볼 수 있도록 허용

이 예제는 IAM 사용자가 자신의 사용자 ID에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여 줍니다.

{ "Version": "2012-10-17" , "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

서비스 역할 및 신뢰 정책

Amazon Connect Health는 IAM 서비스 역할을 사용하여 사용자를 대신하여 작업을 수행합니다. Amazon Connect Health와 상호 작용하는 각 AWS 서비스 구성 요소는 특정 서비스 보안 주체로 범위가 지정된 신뢰 정책이 있는 전용 IAM 서비스 역할로 작동합니다.

다음 예제에서는 도메인, 통합 및 에이전트 관리에 대한 권한을 부여하는 Amazon Connect Health의 서비스 역할 정책을 보여줍니다.

{ "Version": "2012-10-17" , "Statement": [ { "Sid": "DescribeUserWithSourceIdentity", "Effect": "Allow", "Action": [ "identitystore:DescribeUser" ], "Resource": "arn:aws:identitystore:::user/${aws:SourceIdentity}" }, { "Sid": "DomainReadAccess", "Effect": "Allow", "Action": [ "health-agent:GetDomain" ], "Resource": "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>" }, { "Sid": "ListOperations", "Effect": "Allow", "Action": [ "health-agent:ListIntegrations", "health-agent:ListAgents", "health-agent:ListAgentVersions" ], "Resource": "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>" }, { "Sid": "IntegrationManagement", "Effect": "Allow", "Action": [ "health-agent:CreateIntegration", "health-agent:GetIntegration", "health-agent:UpdateIntegration", "health-agent:DeleteIntegration" ], "Resource": [ "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>", "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/integration/*" ] }, { "Sid": "AgentManagement", "Effect": "Allow", "Action": [ "health-agent:CreateAgent", "health-agent:UpdateAgent", "health-agent:GetAgent", "health-agent:PublishAgent", "health-agent:DeleteAgent" ], "Resource": [ "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>", "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/agent/*" ] } ] }

다음 예제에서는 Amazon Connect Health 서비스 보안 주체가 역할을 수임하도록 허용하는 신뢰 정책을 보여줍니다.

{ "Version": "2012-10-17" , "Statement": [ { "Sid": "AllowHealthAgentServicePrincipal", "Effect": "Allow", "Principal": { "Service": "health-agent.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/*" }, "StringEquals": { "aws:SourceAccount": "<account-id>" } } } ] }

혼동된 대리자 문제를 방지하려면 신뢰 정책에서 aws:SourceArnaws:SourceAccount 조건 키를 사용하는 것이 좋습니다. 소스 ARN은 역할이 제공하려는 특정 Amazon Connect Health 도메인으로 범위가 지정되어야 합니다.