Amazon Lex 자격 증명 기반 정책의 예 - Amazon Lex

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Amazon Lex 자격 증명 기반 정책의 예

기본적으로 IAM 사용자 및 역할은 Amazon Lex 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management 콘솔, AWS CLI 또는 AWS API를 사용해 작업을 수행할 수 없습니다. IAM 관리자는 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 사용자와 역할에게 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 정책을 연결해야 합니다.

을 생성하는 방법을 알아보려면 IAM 예제 JSON 정책 문서를 사용하는 ID 기반 정책입니다. 참조 JSON 탭에서 정책 만들기 에서 IAM 사용 설명서.

정책 모범 사례

자격 증명 기반 정책은 매우 강력합니다. 이 정책은 계정에서 사용자가 Amazon Lex 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부를 결정합니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. 자격 증명 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르십시오.

  • AWS 관리형 정책을 사용하여 시작하기 – Amazon Lex 사용을 빠르게 시작하려면 AWS 관리형 정책을 사용하여 필요한 권한을 직원에게 부여합니다. 이 정책은 이미 계정에서 사용할 수 있으며 AWS에 의해 유지 관리 및 업데이트됩니다. 자세한 내용은 을 참조하십시오. 사용 권한 사용 시작 AWS 관리되는 정책 에서 IAM 사용 설명서.

  • 최소 권한 부여 – 사용자 지정 정책을 생성할 때는 작업을 수행하는 데 필요한 권한만 부여합니다. 최소한의 권한 조합으로 시작하여 필요에 따라 추가 권한을 부여합니다. 처음부터 권한을 많이 부여한 후 나중에 줄이는 방법보다 이 방법이 안전합니다. 자세한 내용은 을 참조하십시오. 최소 권한 부여 에서 IAM 사용 설명서.

  • 중요한 작업에 대해 MFA 활성화 – 보안을 강화하기 위해 IAM 사용자가 중요한 리소스 또는 API 작업에 액세스하려면 멀티 팩터 인증(MFA)을 사용해야 합니다. 자세한 내용은 AWSIAM 사용 설명서에서 멀티 팩터 인증(MFA) 사용하기를 참조하십시오.

  • 보안 강화를 위해 정책 조건 사용 – 실제로 가능한 경우, 자격 증명 기반 정책이 리소스에 대한 액세스를 허용하는 조건을 정의합니다. 예를 들어 요청을 할 수 있는 IP 주소의 범위를 지정하도록 조건을 작성할 수 있습니다. 지정된 날짜 또는 시간 범위 내에서만 요청을 허용하거나, SSL 또는 MFA를 사용해야 하는 조건을 작성할 수도 있습니다. 자세한 내용은 을 참조하십시오. IAM JSON 정책 요소: 조건 에서 IAM 사용 설명서.

Amazon Lex 콘솔 사용

Amazon Lex 콘솔에 액세스하려면 최소 권한 집합이 있어야 합니다. 이러한 권한은 AWS 계정에서 Amazon Lex 리소스에 대한 세부 정보를 나열하고 볼 수 있도록 허용해야 합니다. 최소 필수 권한보다 더 제한적으로 권한을 적용하는 자격 증명 기반 정책을 만들면 콘솔이 해당 정책에 연결된 개체(IAM 사용자 또는 역할)에 대해 의도대로 작동하지 않습니다.

다음은 Amazon Lex 콘솔을 사용하는 데 필요한 최소 권한입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms", "cloudwatch:DescribeAlarmsForMetric", "kms:DescribeKey", "kms:ListAliases", "lambda:GetPolicy", "lambda:ListFunctions", "lex:*", "polly:DescribeVoices", "polly:SynthesizeSpeech" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "kendra:ListIndices", "Resource": "*" }, { "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:*:*:function:AmazonLex*", "Condition": { "StringLike": { "lambda:Principal": "lex.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:DeleteRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots", "arn:aws:iam::*:role/aws-service-role/channels.lex.amazonaws.com/AWSServiceRoleForLexChannels" ] }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" ], "Condition": { "StringLike": { "iam:AWSServiceName": "lex.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" ] }, { "Effect": "Allow", "Action": [ "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" ], "Condition": { "StringLike": { "iam:PolicyArn": "arn:aws:iam::aws:policy/aws-service-role/AmazonLexBotPolicy" } } }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/channels.lex.amazonaws.com/AWSServiceRoleForLexChannels" ], "Condition": { "StringLike": { "iam:AWSServiceName": "channels.lex.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/channels.lex.amazonaws.com/AWSServiceRoleForLexChannels" ] }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" ], "Condition": { "StringLike": { "iam:PassedToService": [ "lex.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": [ "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/channels.lex.amazonaws.com/AWSServiceRoleForLexChannels" ], "Condition": { "StringLike": { "iam:PolicyArn": "arn:aws:iam::aws:policy/aws-service-role/LexChannelPolicy" } } } ] }

Amazon Lex 콘솔에 이러한 추가 권한이 필요한 이유는 다음과 같습니다.

  • cloudwatch 권한으로 콘솔에서 성능 및 모니터링 정보를 볼 수 있습니다.

  • iam 작업을 통해 Amazon Lex는 Lambda 함수를 호출하고 봇 채널 연결에 대한 데이터를 처리하기 위한 IAM 역할을 맡을 스 있습니다.

  • iam 작업을 통해 콘솔로 다른 AWS 리소스를 사용할 권한을 부여하는 서버 링크 역할을 관리할 수 있습니다.

  • kendra 작업을 사용하면 계정의 Amazon Kendra 인덱스를 나열할 수 있습니다.

  • kms 작업을 통해 봇 채널 연결을 생성하는 경우 데이터를 암호화하는 데 사용되는 AWS Key Management Service 키를 관리할 수 있습니다.

  • lambda 작업을 통해 봇에서 사용할 수 있는 Lambda 함수를 표시하고 Amazon Lex에 봇이 이러한 함수를 호출할 수 있는 필수 권한을 부여할 수 있습니다.

  • lex 작업을 통해 콘솔이 계정의 Amazon Lex 리소스를 표시할 수 있습니다.

  • polly 작업을 통해 콘솔은 사용 가능한 Amazon Polly 음성을 표시하고 텍스트를 스피치로 변환할 수 있습니다.

AWS CLI 또는 AWS API만 호출하는 사용자에게 최소 콘솔 권한을 허용할 필요가 없습니다. 그 대신, 수행하려는 API 작업과 일치하는 작업에만 액세스할 수 있도록 합니다.

자세한 내용은 을 참조하십시오. 사용자에게 권한 추가 에서 IAM 사용 설명서.

에 대한 관리형(미리 정의된) 정책

AWS는 AWS에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 이러한 정책을 AWS 관리형 정책이라고 합니다. 직접 정책을 작성하는 경우보다는 AWS 관리형 정책을 사용하면 사용자, 그룹 및 역할에 적절한 권한을 할당하는 것이 더욱 쉽습니다. 자세한 내용은 을 참조하십시오. AWS 관리 정책 에서 IAM 사용자 가이드.

계정의 그룹과 역할에 연결할 수 있는 다음 AWS 관리형 정책은 Amazon Lex에 고유합니다.

  • ReadOnly — Amazon Lex 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.

  • RunBotsOnly — Amazon Lex 대화형 봇을 실행할 액세스 권한을 부여합니다.

  • FullAccess — Amazon Lex 리소스 모두를 생성하고, 읽고, 업데이트하고, 삭제하고 실행할 모든 액세스 권한을 부여합니다. Amazon Lex 의도를 사용하여 이름이 AmazonLex로 시작하는 Lambda 함수를 연결할 수 있는 권한도 부여합니다.

참고

IAM 콘솔에 로그인하고 이 콘솔에서 특정 정책을 검색하여 이러한 권한 정책을 검토할 수 있습니다.

Amazon Lex API 작업에 대한 권한을 허용하는 고유의 사용자 지정 IAM 정책을 생성할 수도 있습니다. 해당 권한이 필요한 IAM 역할 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다.

예: 사용자가 자신이 권한을 볼 수 있도록 허용

이 예제 정책은 IAM 사용자가 자신의 사용자 자격 증명에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용합니다. 이 정책에는 콘솔이나 AWS CLI 또는 AWS API를 사용하여 프로그래밍 방식으로 이 작업을 완료할 수 있는 권한이 포함됩니다.

{ "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 Lex 봇

이 예제 정책은 AWS 계정의 IAM 사용자에게 계정의 봇을 삭제할 수 있는 권한을 부여합니다.

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

예: 태그를 사용하여 리소스 액세스

이 예제 정책은 Department 키와 Support 값으로 태그가 지정된 모든 리소스에 대해 PostText 작업을 사용할 수 있는 권한을 AWS 계정의 IAM 사용자 또는 역할에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": "lex:PostText", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "lex:ResourceTag/Department": "Support" } } } ] }