인증 정책을 사용하여 VPC Lattice 서비스에 대한 액세스를 제어합니다. - 아마존 VPC 래티스

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

인증 정책을 사용하여 VPC Lattice 서비스에 대한 액세스를 제어합니다.

VPCLattice 인증 정책은 지정된 보안 주체가 서비스 그룹 또는 특정 서비스에 액세스할 수 있는지 여부를 제어하기 위해 서비스 네트워크 또는 서비스에 연결하는 IAM 정책 문서입니다. 액세스를 제어하려는 각 서비스 네트워크 또는 서비스에 하나의 인증 정책을 연결할 수 있습니다.

인증 정책은 ID 기반 정책과 다릅니다. IAM IAMID 기반 정책은 IAM 사용자, 그룹 또는 역할에 연결되며 이러한 ID가 어떤 리소스에서 수행할 수 있는 작업을 정의합니다. 인증 정책은 서비스 및 서비스 네트워크에 연결됩니다. 승인이 성공하려면 인증 정책과 ID 기반 정책 모두에 명시적 허용 문이 있어야 합니다. 자세한 내용은 권한 부여의 작동 방식 단원을 참조하십시오.

AWS CLI 및 콘솔을 사용하여 서비스 및 서비스 네트워크의 인증 정책을 보거나, 추가, 업데이트 또는 제거할 수 있습니다. 를 사용할 때는 명령이 AWS CLI사용자 프로필에 AWS 리전 구성된 프로필에서 실행된다는 점을 기억하십시오. 다른 리전에서 명령을 실행하려는 경우 프로필의 기본 리전을 변경하거나 명령에 --region 파라미터를 사용합니다.

인증 정책을 시작하려면 절차에 따라 서비스 네트워크에 적용되는 인증 정책을 만드세요. 다른 서비스에 적용하지 않으려는 보다 제한적인 권한을 원하는 경우 개별 서비스에 인증 정책을 설정할 수 있습니다.

다음 AWS CLI 작업은 인증 정책을 사용하여 서비스 네트워크에 대한 액세스를 관리하는 방법을 보여줍니다. 콘솔 사용 지침은 VPC Lattice의 서비스 네트워크 섹션을 참조하세요.

서비스 네트워크에 인증 정책 추가

이 섹션의 단계에 따라 다음을 수행하십시오. AWS CLI

  • 를 사용하여 서비스 네트워크에서 액세스 제어를 IAM 활성화합니다.

  • 서비스 네트워크에 인증 정책을 추가합니다. 인증 정책을 추가하지 않으면 모든 트래픽에 액세스 거부 오류가 발생합니다.

액세스 제어를 활성화하고 새 서비스 네트워크에 인증 정책을 추가하는 방법
  1. 인증 정책을 사용할 수 있도록 서비스 네트워크에 대한 액세스 제어를 활성화하려면 --auth-type 옵션과 값이 AWS_IAMcreate-service-network 명령을 사용합니다.

    aws vpc-lattice create-service-network --name Name --auth-type AWS_IAM [--tags TagSpecification]

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "arn": "arn", "authType": "AWS_IAM", "id": "sn-0123456789abcdef0", "name": "Name" }
  2. put-auth-policy 명령을 사용하여 인증 정책을 추가할 서비스 네트워크의 ID와 추가할 인증 정책을 지정합니다.

    예를 들어 다음 명령을 사용하여 ID로 서비스 네트워크에 대한 인증 정책을 생성합니다.sn-0123456789abcdef0.

    aws vpc-lattice put-auth-policy --resource-identifier sn-0123456789abcdef0 --policy file://policy.json

    정책 정의를 생성하는 데 사용합니다. JSON 자세한 내용은 인증 정책의 공통 요소 단원을 참조하십시오.

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "policy": "policy", "state": "Active" }
액세스 제어를 활성화하고 기존 서비스 네트워크에 인증 정책을 추가하는 방법
  1. 인증 정책을 사용할 수 있도록 서비스 네트워크에 대한 액세스 제어를 활성화하려면 --auth-type 옵션과 값이 AWS_IAMupdate-service-network 명령을 사용합니다.

    aws vpc-lattice update-service-network --service-network-identifier sn-0123456789abcdef0 --auth-type AWS_IAM

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "arn": "arn", "authType": "AWS_IAM", "id": "sn-0123456789abcdef0", "name": "Name" }
  2. put-auth-policy 명령을 사용하여 인증 정책을 추가할 서비스 네트워크의 ID와 추가할 인증 정책을 지정합니다.

    aws vpc-lattice put-auth-policy --resource-identifier sn-0123456789abcdef0 --policy file://policy.json

    정책 정의를 생성하는 JSON 데 사용합니다. 자세한 내용은 인증 정책의 공통 요소 단원을 참조하십시오.

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "policy": "policy", "state": "Active" }

서비스 네트워크의 인증 유형 변경

서비스 네트워크에 대한 인증 정책을 비활성화하는 방법

--auth-type 옵션과 값이 NONEupdate-service-network 명령을 사용합니다.

aws vpc-lattice update-service-network --service-network-identifier sn-0123456789abcdef0 --auth-type NONE

나중에 인증 정책을 다시 활성화해야 하는 경우 --auth-type 옵션에 AWS_IAM이 지정된 상태로 이 명령을 실행하세요.

서비스 네트워크에서 인증 정책 제거

서비스 네트워크에서 인증 정책을 제거하는 방법

delete-auth-policy 명령을 사용합니다.

aws vpc-lattice delete-auth-policy --resource-identifier sn-0123456789abcdef0

서비스 네트워크의 인증 유형을 NONE으로 변경하기 전에 인증 정책을 제거하면 요청이 실패합니다.

다음 AWS CLI 작업은 인증 정책을 사용하여 서비스에 대한 액세스를 관리하는 방법을 보여줍니다. 콘솔 사용 지침은 VPC Lattice 내 서비스 섹션을 참조하세요.

서비스에 인증 정책 추가

다음 단계에 AWS CLI 따라 다음을 수행하십시오.

  • 를 사용하여 서비스에 대한 액세스 제어를 IAM 활성화합니다.

  • 서비스에 인증 정책을 추가합니다. 인증 정책을 추가하지 않으면 모든 트래픽에 액세스 거부 오류가 발생합니다.

액세스 제어를 활성화하고 새 서비스에 인증 정책을 추가하는 방법
  1. 인증 정책을 사용할 수 있도록 서비스에 대한 액세스 제어를 활성화하려면 --auth-type 옵션과 값이 AWS_IAMcreate-service 명령을 사용합니다.

    aws vpc-lattice create-service --name Name --auth-type AWS_IAM [--tags TagSpecification]

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "arn": "arn", "authType": "AWS_IAM", "dnsEntry": { ... }, "id": "svc-0123456789abcdef0", "name": "Name", "status": "CREATE_IN_PROGRESS" }
  2. put-auth-policy 명령을 사용하여 인증 정책을 추가할 서비스의 ID와 추가할 인증 정책을 지정합니다.

    예를 들어 다음 명령어를 사용하여 해당 ID로 서비스에 대한 인증 정책을 생성합니다.svc-0123456789abcdef0.

    aws vpc-lattice put-auth-policy --resource-identifier svc-0123456789abcdef0 --policy file://policy.json

    정책 정의를 생성하는 JSON 데 사용합니다. 자세한 내용은 인증 정책의 공통 요소 단원을 참조하십시오.

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "policy": "policy", "state": "Active" }
액세스 제어를 활성화하고 기존 서비스에 인증 정책을 추가하는 방법
  1. 인증 정책을 사용할 수 있도록 서비스에 대한 액세스 제어를 활성화하려면 --auth-type 옵션과 값이 AWS_IAMupdate-service 명령을 사용합니다.

    aws vpc-lattice update-service --service-identifier svc-0123456789abcdef0 --auth-type AWS_IAM

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "arn": "arn", "authType": "AWS_IAM", "id": "svc-0123456789abcdef0", "name": "Name" }
  2. put-auth-policy 명령을 사용하여 인증 정책을 추가할 서비스의 ID와 추가할 인증 정책을 지정합니다.

    aws vpc-lattice put-auth-policy --resource-identifier svc-0123456789abcdef0 --policy file://policy.json

    정책 정의를 생성하는 JSON 데 사용합니다. 자세한 내용은 인증 정책의 공통 요소 단원을 참조하십시오.

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "policy": "policy", "state": "Active" }

서비스의 인증 유형 변경

서비스에 대한 인증 정책을 비활성화하는 방법

--auth-type 옵션과 값이 NONEupdate-service 명령을 사용합니다.

aws vpc-lattice update-service --service-identifier svc-0123456789abcdef0 --auth-type NONE

나중에 인증 정책을 다시 활성화해야 하는 경우 --auth-type 옵션에 AWS_IAM이 지정된 상태로 이 명령을 실행하세요.

서비스에서 인증 정책 제거

서비스에서 인증 정책을 제거하는 방법

delete-auth-policy 명령을 사용합니다.

aws vpc-lattice delete-auth-policy --resource-identifier svc-0123456789abcdef0

서비스의 인증 유형을 NONE으로 변경하기 전에 인증 정책을 제거하면 요청이 실패합니다.

서비스에 대한 인증된 요청을 요구하는 인증 정책을 활성화하는 경우 해당 서비스에 대한 모든 요청에는 Signature Version 4(SigV4)를 사용하여 계산된 유효한 요청 서명이 포함되어야 합니다. 자세한 내용은 SIGv4아마존 VPC 래티스에 대한 인증된 요청 단원을 참조하십시오.

인증 정책의 공통 요소

VPCLattice 인증 정책은 정책과 동일한 구문을 사용하여 지정됩니다. IAM 자세한 내용은 사용 설명서의 ID 기반 정책 및 리소스 기반 정책을 참조하십시오. IAM

인증 정책에는 다음 요소가 포함됩니다.

  • 보안 주체 - 문에서의 작업 및 리소스에 액세스할 수 있는 사람 또는 애플리케이션입니다. 인증 정책에서 IAM 주체는 이 권한을 받는 주체입니다. 보안 IAM 주체는 서비스 네트워크에 있는 서비스의 경우처럼 특정 리소스 또는 리소스 그룹에 요청을 보낼 수 있는 주체로 인증됩니다.

    리소스 기반 정책에서 보안 주체를 지정해야 합니다. 보안 주체에는 계정, 사용자, 역할, 연동 사용자 또는 서비스가 포함될 수 있습니다. AWS 자세한 내용은 사용 설명서의 AWS JSON정책 요소: 주체를 참조하십시오. IAM

  • 결과 – 지정된 보안 주체가 특정 작업을 요청할 때의 결과입니다. 이는 Allow 또는 Deny일 수 있습니다. 기본적으로 를 사용하여 IAM 서비스 또는 서비스 네트워크에서 액세스 제어를 활성화하면 주체는 서비스 또는 서비스 네트워크에 요청을 보낼 권한이 없습니다.

  • 작업 — 권한을 부여하거나 거부하는 특정 API 작업입니다. VPCLattice는 접두사를 사용하는 작업을 지원합니다. vpc-lattice-svcs 자세한 내용은 서비스 승인 참조의 Amazon VPC Lattice 서비스가 정의하는 작업을 참조하십시오.

  • 리소스 – 작업의 영향을 받는 리소스입니다.

  • 조건: 조건은 선택 사항으로서 이를 사용하여 정책이 적용되는 시기를 제어할 수 있습니다. 자세한 내용은 서비스 인증 참조의 Amazon VPC Lattice 서비스의 조건 키를 참조하십시오.

인증 정책을 생성하고 관리할 때는 정책 생성기를 사용하는 것이 좋습니다. IAM

요구 사항

의 정책에는 줄 바꿈이나 빈 줄이 JSON 포함되어서는 안 됩니다.

인증 정책의 리소스 형식

다음 예와 같이 <serviceARN>/<path> 패턴이 있는 매칭 스키마를 사용하고 Resource 요소를 코딩하는 인증 정책을 생성하여 특정 리소스에 대한 액세스를 제한할 수 있습니다.

프로토콜 예시
HTTP
  • "Resource": "arn:aws:vpc-lattice:us-west-2:1234567890:service/svc-0123456789abcdef0/rates"

  • "Resource": "*/rates"

  • "Resource": "*/*"

g. RPC
  • "Resource": "arn:aws:vpc-lattice:us-west-2:1234567890:service/svc-0123456789abcdef0/api.parking/GetRates"

  • "Resource": "arn:aws:vpc-lattice:us-west-2:1234567890:service/svc-0123456789abcdef0/api.parking/*"

  • "Resource": "arn:aws:vpc-lattice:us-west-2:1234567890:service/svc-0123456789abcdef0/*"

다음과 같은 Amazon 리소스 이름 (ARN) 리소스 형식을 사용하십시오<serviceARN>.

arn:aws:vpc-lattice:region:account-id:service/service-id

예:

"Resource": "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-0123456789abcdef0"

인증 정책에 사용할 수 있는 조건 키

인증 정책의 조건 요소에 있는 조건 키를 통해 액세스를 추가로 제어할 수 있습니다. 이러한 조건 키는 프로토콜과 요청이 Signature Version 4(SigV4)로 서명되었는지 아니면 익명으로 서명되었는지에 따라 평가용으로 제공됩니다. 조건 키는 대소문자를 구분합니다.

AWS 액세스를 제어하는 데 사용할 수 있는 글로벌 조건 키 (예: aws:PrincipalOrgID 및) 를 제공합니다aws:SourceIp. AWS 글로벌 조건 키 목록을 보려면 IAM사용 설명서의 AWS 글로벌 조건 컨텍스트 키를 참조하십시오.

다음 표에는 VPC Lattice 조건 키가 나열되어 있습니다. 자세한 내용은 서비스 인증 참조의 Amazon VPC Lattice 서비스의 조건 키를 참조하십시오.

조건 키 설명 익명의(인증되지 않은) 호출자가 사용할 수 있나요? RPCg에서 사용할 수 있나요?
vpc-lattice-svcs:Port 요청이 있는 서비스 포트를 기준으로 액세스를 필터링합니다. 80
vpc-lattice-svcs:RequestMethod 요청의 방법을 기준으로 액세스를 필터링합니다. GET 항상 POST
vpc-lattice-svcs:RequestHeader/header-name: value 요청 헤더의 헤더 이름-값 쌍을 기준으로 액세스를 필터링합니다. content-type: application/json
vpc-lattice-svcs:RequestQueryString/key-name: value 요청에서 쿼리 문자열 키-값 쌍으로 액세스를 필터링합니다. URL quux: [corge, grault] 아니요
vpc-lattice-svcs:ServiceNetworkArn 요청을 받는 서비스의 서비스 네트워크를 기준으로 액세스를 필터링합니다. ARN arn:aws:vpc-lattice:us-west-2:123456789012:servicenetwork/sn-0123456789abcdef0
vpc-lattice-svcs:ServiceArn 요청을 받는 서비스별로 액세스를 필터링합니다. ARN arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-0123456789abcdef0
vpc-lattice-svcs:SourceVpc 요청 출처별로 액세스를 VPC 필터링합니다. vpc-1a2b3c4d
vpc-lattice-svcs:SourceVpcOwnerAccount 요청의 소유자 계정별 필터 액세스는 다음과 같습니다. VPC 123456789012

익명의(인증되지 않은) 보안 주체

익명 주체는 서명 버전 4 (SigV4) 로 AWS 요청에 서명하지 않고 서비스 네트워크에 연결된 계정 내에 VPC 있는 발신자입니다. 인증 정책에서 허용하는 경우 익명의 보안 주체는 서비스 네트워크의 서비스에 인증되지 않은 요청을 할 수 있습니다.

인증 정책 예시

다음은 인증된 보안 주체가 요청을 해야 하는 인증 정책의 예시입니다.

모든 예시는 us-west-2 지역을 사용하며 가상 계정을 포함합니다. IDs

예 1: 특정 조직의 서비스 액세스 제한 AWS

다음 인증 정책 예시는 정책이 적용되는 서비스 네트워크의 모든 서비스에 액세스할 수 있는 권한을 인증된 모든 요청에 부여합니다. 단, 요청은 조건에 지정된 AWS 조직에 속한 주체로부터 시작되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "vpc-lattice-svcs:Invoke", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": [ "o-123456example" ] } } } ] }
예 2: 특정 역할별로 서비스 액세스 제한 IAM

다음 인증 정책 예제는 IAM 역할을 사용하여 요소에 지정된 서비스에 요청을 rates-client 보내는 모든 인증된 HTTP GET 요청에 권한을 부여합니다. Resource Resource 요소의 리소스는 정책이 연결된 서비스와 동일합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/rates-client" ] }, "Action": "vpc-lattice-svcs:Invoke", "Resource": [ "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-0123456789abcdef0/*" ], "Condition": { "StringEquals": { "vpc-lattice-svcs:RequestMethod": "GET" } } } ] }
예 3: 특정 주체의 인증된 보안 주체에 의한 서비스 액세스 제한 VPC

다음 인증 정책 예시에서는 ID가 다음과 같은 보안 주체의 인증된 요청만 허용합니다. VPC VPC vpc-1a2b3c4d

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "vpc-lattice-svcs:Invoke", "Resource": "*", "Condition": { "StringNotEquals": { "aws:PrincipalType": "Anonymous" }, "StringEquals": { "vpc-lattice-svcs:SourceVpc": "vpc-1a2b3c4d" } } } ] }

권한 부여의 작동 방식

VPCLattice 서비스가 요청을 받으면 AWS 시행 코드는 모든 관련 권한 정책을 함께 평가하여 요청을 승인할지 거부할지 결정합니다. 권한 부여 중에 요청 컨텍스트에 적용할 수 있는 모든 IAM ID 기반 정책 및 인증 정책을 평가합니다. 기본적으로 인증 유형이 AWS_IAM인 경우 모든 요청이 묵시적으로 거부됩니다. 모든 관련 정책의 명시적 허용은 기본 설정을 무시합니다.

승인에는 다음이 포함됩니다.

  • 모든 관련 IAM ID 기반 정책 및 인증 정책을 수집합니다.

  • 정책 세트 결과 평가:

    • 요청자 (예: IAM 사용자 또는 역할) 에게 요청자가 속한 계정에서 작업을 수행할 권한이 있는지 확인합니다. 명시적인 허용 명령문이 없는 경우 요청을 승인하지 AWS 않습니다.

    • 서비스 네트워크의 인증 정책에서 해당 요청을 허용하는지 확인합니다. 인증 정책이 활성화되어 있지만 명시적인 허용 명령문이 없는 경우 요청을 승인하지 AWS 않습니다. 명시적 허용 문이 있거나 인증 유형이 NONE인 경우 코드는 계속 실행됩니다.

    • 서비스에 대한 인증 정책에서 해당 요청을 허용하는지 확인합니다. 인증 정책이 활성화되어 있지만 명시적인 허용 명령문이 없는 경우 요청을 AWS 승인하지 않습니다. 명시적 허용 문이 있거나 인증 유형이 NONE인 경우 적용 코드가 최종 Allow 결정을 반환합니다.

    • 어떠한 정책의 명시적 거부도 허용을 무시합니다.

다이어그램은 권한 부여 워크플로를 보여줍니다. 요청을 하면 관련 정책은 해당 서비스에 대한 요청 액세스를 허용하거나 거부합니다.

권한 부여 워크플로