Amazon Cognito를 사용하여 인증되지 않은 게스트의 애플리케이션 액세스 허용 - Amazon Location Service

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

Amazon Cognito를 사용하여 인증되지 않은 게스트의 애플리케이션 액세스 허용

Amazon Cognito 인증을 프런트 엔드 SDKs 및 직접 HTTPS 요청 모두에서 AWS Identity and Access Management (IAM)를 직접 사용하는 대신 사용할 수 있습니다.

다음과 같은 이유로 이 인증 형식을 사용하는 것이 좋습니다.

  • 인증되지 않은 사용자 – 익명 사용자가 있는 웹 사이트가 있는 경우 Amazon Cognito 자격 증명 풀을 사용할 수 있습니다. 자세한 내용은 Amazon Cognito를 사용하여 인증되지 않은 게스트의 애플리케이션 액세스 허용 섹션을 참조하세요.

  • 자체 인증 – 자체 인증 프로세스를 사용하거나 여러 인증 방법을 결합하려는 경우 Amazon Cognito 페더레이션 ID를 사용할 수 있습니다. 자세한 내용은 Amazon Cognito 개발자 안내서페더레이션 ID 시작하기를 참조하세요.

Amazon Cognito는 웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다. 애플리케이션이 일시적으로 범위가 축소된 AWS 자격 증명을 검색하는 방법으로 Amazon Location과 함께 Amazon Cognito 인증되지 않은 자격 증명 풀을 사용할 수 있습니다.

자세한 내용은 Amazon Cognito 개발자 안내서사용자 풀 시작하기를 참조하세요.

참고

모바일 개발자의 경우 Amazon Location은 iOS와 Android 모두에 SDKs 모바일 인증을 제공합니다. 자세한 내용은 다음 GitHub 리포지토리를 참조하세요.

Amazon Cognito 자격 증명 풀 생성

Amazon Cognito 콘솔, AWS CLI또는 Amazon Cognito 를 통해 인증되지 않은 게스트가 애플리케이션에 액세스할 수 있도록 Amazon Cognito 자격 증명 풀을 생성할 수 있습니다APIs.

중요

생성하는 풀은 사용 중인 Amazon Location Service 리소스 AWS 계정 와 동일한 및 AWS 리전에 있어야 합니다.

인증되지 않은 자격 증명 역할과 관련된 IAM 정책을 다음 작업과 함께 사용할 수 있습니다.

  • geo:GetMap*

  • geo:SearchPlaceIndex*

  • geo:GetPlace

  • geo:CalculateRoute*

  • geo:GetGeofence

  • geo:ListGeofences

  • geo:PutGeofence

  • geo:BatchDeleteGeofence

  • geo:BatchPutGeofence

  • geo:BatchEvaluateGeofences

  • geo:GetDevicePosition*

  • geo:ListDevicePositions

  • geo:BatchDeleteDevicePositionHistory

  • geo:BatchGetDevicePosition

  • geo:BatchUpdateDevicePosition

다른 Amazon Location 작업을 포함해도 효과가 없으며 인증되지 않은 ID는 해당 작업을 호출할 수 없습니다.

Amazon Cognito 콘솔을 사용하여 자격 증명 풀을 만들려면

  1. Amazon Cognito 콘솔로 이동합니다.

  2. 자격 증명 풀 관리를 선택합니다.

  3. 새 자격 증명 풀 생성을 선택한 다음 자격 증명 풀의 이름을 입력합니다.

  4. 축소 가능한 인증되지 않은 자격 증명 섹션에서 인증되지 않은 자격 증명에 대한 액세스 활성화를 선택합니다.

  5. 풀 생성을 선택합니다.

  6. 자격 증명 풀에 사용할 IAM 역할을 선택합니다.

  7. 세부 정보 보기를 확장합니다.

  8. 인증되지 않은 ID에서 역할 이름을 입력합니다.

  9. 정책 문서 보기 섹션을 확장한 다음, 정책을 추가하기 위해 편집을 선택합니다.

  10. 정책을 추가하여 리소스에 대한 액세스 권한을 부여합니다.

    다음은 맵, 장소, 트래커 및 경로에 대한 정책 예시입니다. 자체 정책에 예제를 사용하려면 region 그리고 accountID 자리 표시자:

    Maps policy example

    다음 정책은 라는 맵 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.ExampleMap.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MapsReadOnly", "Effect": "Allow", "Action": [ "geo:GetMapStyleDescriptor", "geo:GetMapGlyphs", "geo:GetMapSprites", "geo:GetMapTile" ], "Resource": "arn:aws:geo:region:accountID:map/ExampleMap" } ] }

    일치하는 IAM 조건을 추가aws:referer하면 리소스에 대한 브라우저 액세스를 URLs 또는 URL 접두사 목록으로 제한할 수 있습니다. 다음 예시에서는 example.com 웹사이트에서 RasterEsriImagery 이름이 지정된 맵 리소스에만 액세스할 수 있도록 허용합니다.

    주의

    는 액세스를 제한할 aws:referer 수 있지만 보안 메커니즘은 아닙니다. 공개적으로 알려진 참조자 헤더 값을 포함하는 것은 위험합니다. 권한이 없는 사용자가 수정된 브라우저나 사용자 지정 브라우저를 사용하여 원하는 aws:referer 값을 제공할 수 있습니다. 따라서 무단 사용자의 직접 AWS 요청을 차단할 목적으로 aws:referer을 사용해서는 안 됩니다. 이러한 값은 고객이 Amazon S3에 저장된 콘텐츠 등의 디지털 콘텐츠를 권한이 없는 타사 사이트에서 참조하지 못하도록 보호하기 위해서만 사용하세요. 자세한 내용은 AWS:referer를 참조하세요.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:GetMap*", "Resource": "arn:aws:geo:us-west-2:111122223333:map/RasterEsriImagery", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }

    Tangram을 사용하여 맵을 표시하는 경우 맵 에서 반환하는 스타일 설명자, 글리프 또는 스프라이트를 사용하지 않습니다API. 대신 스타일 규칙 및 필수 에셋이 포함된 .zip 파일을 가리키도록 구성됩니다. 다음 정책은 라는 맵 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.ExampleMap GetMapTile 작업을 위한 입니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MapsReadOnly", "Effect": "Allow", "Action": [ "geo:GetMapTile" ], "Resource": "arn:aws:geo:region:accountID:map/ExampleMap" } ] }
    Places policy example

    다음 정책은 라는 위치 인덱스 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.ExamplePlaceIndex 텍스트 또는 위치별로 위치를 검색합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PlacesReadOnly", "Effect": "Allow", "Action": [ "geo:SearchPlaceIndex*", "geo:GetPlace" ], "Resource": "arn:aws:geo:region:accountID:place-index/ExamplePlaceIndex" } ] }

    일치하는 IAM 조건을 추가aws:referer하면 리소스에 대한 브라우저 액세스를 URLs 또는 URL 접두사 목록으로 제한할 수 있습니다. 다음 예제에서는 라는 위치 인덱스 리소스에 대한 액세스를 거부합니다.ExamplePlaceIndex 를 제외한 모든 참조 웹 사이트에서example.com.

    주의

    는 액세스를 제한할 aws:referer 수 있지만 보안 메커니즘은 아닙니다. 공개적으로 알려진 참조자 헤더 값을 포함하는 것은 위험합니다. 권한이 없는 사용자가 수정된 브라우저나 사용자 지정 브라우저를 사용하여 원하는 aws:referer 값을 제공할 수 있습니다. 따라서 무단 사용자의 직접 AWS 요청을 차단할 목적으로 aws:referer을 사용해서는 안 됩니다. 이러한 값은 고객이 Amazon S3에 저장된 콘텐츠 등의 디지털 콘텐츠를 권한이 없는 타사 사이트에서 참조하지 못하도록 보호하기 위해서만 사용하세요. 자세한 내용은 AWS:referrer를 참조하세요.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:*", "Resource": "arn:aws:geo:us-west-2:111122223333:place-index/ExamplePlaceIndex", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }
    Trackers policy example

    다음 정책은 라는 트래커 리소스에 대한 액세스 권한을 부여합니다.ExampleTracker 디바이스 위치를 업데이트합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "UpdateDevicePosition", "Effect": "Allow", "Action": [ "geo:BatchUpdateDevicePosition" ], "Resource": "arn:aws:geo:region:accountID:tracker/ExampleTracker" } ] }

    일치하는 IAM 조건을 추가aws:referrer하면 리소스에 대한 브라우저 액세스를 URLs 또는 URL 접두사 목록으로 제한할 수 있습니다. 다음 예제에서는 라는 트래커 리소스에 대한 액세스를 거부합니다.ExampleTracker 를 제외한 모든 참조 웹 사이트에서example.com.

    주의

    는 액세스를 제한할 aws:referrer 수 있지만 보안 메커니즘은 아닙니다. 공개적으로 알려진 참조자 헤더 값을 포함하는 것은 위험합니다. 권한이 없는 사용자가 수정된 브라우저나 사용자 지정 브라우저를 사용하여 원하는 aws:referrer 값을 제공할 수 있습니다. 따라서 무단 사용자의 직접 AWS 요청을 차단할 목적으로 aws:referrer을 사용해서는 안 됩니다. 이러한 값은 고객이 Amazon S3에 저장된 콘텐츠 등의 디지털 콘텐츠를 권한이 없는 타사 사이트에서 참조하지 못하도록 보호하기 위해서만 사용하세요. 자세한 내용은 AWS:referrer를 참조하세요.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:GetDevice*", "Resource": "arn:aws:geo:us-west-2:111122223333:tracker/ExampleTracker", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }
    Routes policy example

    다음 정책은 라는 라우팅 계산기 리소스에 대한 액세스 권한을 부여합니다.ExampleCalculator 경로를 계산합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "RoutesReadOnly", "Effect": "Allow", "Action": [ "geo:CalculateRoute" ], "Resource": "arn:aws:geo:region:accountID:route-calculator/ExampleCalculator" } ] }

    일치하는 IAM 조건을 추가aws:referrer하면 리소스에 대한 브라우저 액세스를 URLs 또는 URL 접두사 목록으로 제한할 수 있습니다. 다음 예제에서는 라는 라우팅 계산기에 대한 액세스를 거부합니다.ExampleCalculator 를 제외한 모든 참조 웹 사이트에서example.com.

    주의

    는 액세스를 제한할 aws:referrer 수 있지만 보안 메커니즘은 아닙니다. 공개적으로 알려진 참조자 헤더 값을 포함하는 것은 위험합니다. 권한이 없는 사용자가 수정된 브라우저나 사용자 지정 브라우저를 사용하여 원하는 aws:referrer 값을 제공할 수 있습니다. 따라서 무단 사용자의 직접 AWS 요청을 차단할 목적으로 aws:referrer을 사용해서는 안 됩니다. 이러한 값은 고객이 Amazon S3에 저장된 콘텐츠 등의 디지털 콘텐츠를 권한이 없는 타사 사이트에서 참조하지 못하도록 보호하기 위해서만 사용하세요. 자세한 내용은 AWS:referrer를 참조하세요.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:*", "Resource": "arn:aws:geo:us-west-2:111122223333:route-calculator/ExampleCalculator", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }
    참고

    인증되지 않은 자격 증명 풀은 보안되지 않은 인터넷 사이트에 노출하기 위한 것이지만 표준 시간 제한 AWS 자격 증명으로 교환됩니다.

    인증되지 않은 자격 증명 풀과 관련된 IAM 역할의 범위를 적절하게 지정하는 것이 중요합니다.

  11. 허용를 선택하여 자격 증명 풀을 생성하세요.

결과 자격 증명 풀은 <region>:<GUID>. 문법을 따릅니다.

예:

us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef

Amazon Location과 관련된 추가 정책 예는 Amazon Location Service의 자격 증명 기반 정책 예제을 참조하세요.

에서 Amazon Cognito 자격 증명 풀 사용 JavaScript

다음 예제에서는 생성한 인증되지 않은 자격 증명 풀을 자격 증명으로 교환한 다음 맵 리소스의 스타일 설명자를 가져오는 데 사용합니다.ExampleMap.

const AWS = require("aws-sdk"); const credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "<identity pool ID>" // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef }); const client = new AWS.Location({ credentials, region: AWS.config.region || "<region>" }); console.log(await client.getMapStyleDescriptor("ExampleMap").promise());
참고

인증되지 않은 ID에서 검색한 자격 증명은 1시간 동안 유효합니다.

다음은 자격 증명이 만료되기 전에 자격 증명을 자동으로 갱신하는 함수의 예입니다.

async function refreshCredentials() { await credentials.refreshPromise(); // schedule the next credential refresh when they're about to expire setTimeout(refreshCredentials, credentials.expireTime - new Date()); }

이 작업을 간소화하기 위해 Amazon Location JavaScript 인증 도우미을 사용할 수 있습니다. 이는 자격 증명을 가져오고 새로 고치는 작업을 모두 대신합니다. 이 예제에서는 JavaScript v3용 를 AWS SDK 사용합니다.

import { LocationClient, GetMapStyleDescriptorCommand } from "@aws-sdk/client-location"; import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; const identityPoolId = "<identity pool ID>"; // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef // Create an authentication helper instance using credentials from Cognito const authHelper = await withIdentityPoolId(identityPoolId); const client = new LocationClient({ region: "<region>", // The region containing both the identity pool and tracker resource ...authHelper.getLocationClientConfig(), // Provides configuration required to make requests to Amazon Location }); const input = { MapName: "ExampleMap", }; const command = new GetMapStyleDescriptorCommand(input); console.log(await client.send(command));

다음 단계