View a markdown version of this page

모범 사례 - Amazon Location Service

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

모범 사례

이 섹션에서는 Amazon Location Service 애플리케이션을 보호하고 인증 사용을 최적화하는 모범 사례를 간략하게 설명합니다. 자격 증명 격리, 모니터링 및 적절한 제한을 구현하면 보안 위험을 최소화하고 비용을 제어할 수 있습니다. API 키, Amazon Cognito 및 중에서 선택하는 방법에 대한 지침은 섹션을 AWS Identity and Access Management참조하세요인증 방법 선택.

보안 인증 정보 관리

적절한 자격 증명 관리는 보안 위험을 줄이고 액세스를 교체하거나 취소해야 할 때 작업을 간소화합니다.

  • 애플리케이션당 별도의 자격 증명 사용 - 각 애플리케이션 또는 환경(개발, 스테이징, 프로덕션)에 대해 고유한 API 키 또는 IAM 역할을 생성합니다. 이렇게 하면 자격 증명이 손상된 경우 블래스트 반경이 제한됩니다.

  • 최소 권한 원칙 적용 - 각 사용 사례에 필요한 최소 권한만 부여합니다. 와일드카드를 사용하는 대신 특정 APIs 및 리소스에 대한 액세스를 제한합니다.

  • 자격 증명 정기적으로 교체 - API 키를 주기적으로 교체하고 IAM 정책을 검토합니다. 사용하지 않는 자격 증명을 즉시 제거합니다.

  • 소스 코드에 자격 증명 노출 안 함 - 환경 변수, 보안 암호 관리자 또는 보안 구성 저장소에 API 키, Amazon Cognito 자격 증명 풀 IDs 및 기타 민감한 값을 저장합니다. 버전 관리에 커밋하지 마세요.

API 키 최적화

API 키는 Maps, Places 및 Routes 리소스에 대한 인증되지 않은 읽기 전용 액세스 권한을 부여하는 간단한 방법을 제공합니다. 보안 위험을 최소화하고 사용을 최적화하려면 다음 관행을 따르세요.

  • 작업 및 리소스 제한 - API 키를 생성할 때 애플리케이션에 필요한 작업 및 리소스만 지정합니다. 예를 들어 맵 전용 애플리케이션은 맵 공급자 리소스에 대한 geo-maps:* 작업만 허용해야 합니다.

  • 클라이언트 제한 적용 - 웹 애플리케이션에 대한 도메인 참조자 제한 또는 Android 및 iOS 앱에 대한 애플리케이션 식별자 제한을 구성합니다. 이렇게 하면 키가 승인되지 않은 오리진에서 사용되지 않습니다. 자세한 내용은 요청 오리진별로 API 키 사용 제한 단원을 참조하십시오.

  • 만료 시간 설정 - 키 만료를 사용하여 정기적인 교체를 적용합니다. 이전 키가 만료되기 전에 새 키를 생성하고 애플리케이션을 업데이트한 다음 이전 키를 비활성화합니다.

  • 키별 사용량 모니터링 - ApiKeyName차원과 함께 CloudWatch 지표를 사용하여 각 키의 사용량을 개별적으로 추적합니다. 에서 예상치 못한 스파이크에 대한 경보를 설정합니다CallCount.

  • 미사용 키 삭제 - API 키를 정기적으로 감사하고 더 이상 사용되지 않는 키를 삭제합니다. 비활성화된 비활성 키는 90일 후에 삭제할 수 있습니다.

요청 오리진별로 API 키 사용 제한

특정 도메인 또는 모바일 애플리케이션에 대한 액세스를 제한하는 클라이언트 제한으로 API 키를 구성할 수 있습니다. 도메인별로 제한하는 경우 서비스는 HTTP Referer 헤더가 사용자가 제공한 값과 일치하는 경우에만 요청을 승인합니다. Android 또는 Apple 애플리케이션으로 제한하는 경우 서비스는 애플리케이션 식별자 HTTP 헤더 필드가 사용자가 제공한 값과 일치하는 경우에만 요청을 승인합니다.

API 키 제한에 대한 자세한 내용은 Amazon Location Service API 참조의 ApiKeyRestrictions를 참조하세요.

Android 애플리케이션 식별자:

  • X-Android-Package:

    일반적으로 역도메인 형식을 따르는 앱 build.gradle 파일에 정의된 Android 애플리케이션의 고유 식별자입니다.

    예제:

    com.mydomain.appname

  • X-Android-Cert:

    Android APK에 서명하는 데 사용되는 서명 인증서의 SHA-1 해시입니다.

    예제:

    BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75

Apple 애플리케이션 식별자:

  • X-Apple-Bundle-Id:

    일반적으로 역도메인 형식을 따르는 앱의 Info.plist에 정의된 Apple(iOS, macOS 등) 애플리케이션의 고유 식별자입니다.

    예제:

    com.mydomain.appname

Amazon Cognito 최적화

Amazon Cognito는 API 키보다 세분화된 액세스 제어를 제공하며 인증된 사용자와 인증되지 않은 사용자를 모두 지원합니다.

  • 인증되지 않은 역할 범위 축소 - 익명 액세스에 자격 증명 풀을 사용하는 경우 애플리케이션에 필요한 특정 Amazon Location 작업 및 리소스만 허용하는 IAM 정책을 연결합니다.

  • IP 필터링에 조건 키 사용 - IAM 정책에 aws:SourceIp 조건을 추가하여 적절한 경우 알려진 IP 범위에 대한 액세스를 제한합니다.

  • 자격 증명 풀을 동일한 리전에 유지 - 리전 간 지연 시간을 방지하고 적절한 액세스를 보장하기 위해 Amazon Location Service 리소스와 동일한 AWS 리전에 Amazon Cognito 자격 증명 풀을 생성합니다.

  • 가능하면 인증된 자격 증명 사용 - 애플리케이션에 로그인 흐름이 있는 경우 Amazon Cognito 사용자 풀 또는 페더레이션 자격 증명을 사용하여 인증되지 않은 액세스에 의존하지 않고 특정 권한이 있는 인증된 역할을 부여합니다.

IAM 최적화

서버 측 애플리케이션 및 내부 도구의 경우 액세스를 완전히 제어 AWS Identity and Access Management 하려면를 사용합니다.

  • 장기 자격 증명 대신 IAM 역할 사용 - AWS 컴퓨팅 서비스(예: Amazon EC2, Lambda 또는 Amazon ECS)에서 실행되는 애플리케이션의 경우 IAM 역할을 사용하여 임시 자격 증명을 자동으로 제공합니다.

  • 리소스 수준 권한 적용 - 와일드카드를 사용하는 대신 정책에 리소스 ARNs을 지정합니다. 예를 들어 특정 트래커 또는 지오펜스 컬렉션 리소스에 대한 액세스를 제한합니다.

  • 정책 조건 사용 - 특정 리전aws:RequestedRegion에 대한 액세스를 제한하거나 속성 기반 액세스 제어를 aws:PrincipalTag 위해와 같은 조건을 추가합니다.

  • CloudTrail 활성화 - 감사 및 규정 준수를 위해 모든 Amazon Location Service API 호출을 로깅하는 AWS CloudTrail 데 사용합니다. 예상치 못한 액세스 패턴이 있는지 정기적으로 로그를 검토합니다.