AWS 보안 자격 증명을 이용한 프로그래밍 방식 접근

AWS 보안 자격 증명을 이용한 프로그래밍 방식 접근

AWS에 프로그래밍 방식으로 호출하거나 AWS Command Line Interface(AWS CLI)·AWS Tools for PowerShell을 사용할 때는 가능하면 단기 액세스 키 사용을 권장합니다. 하지만 이런 용도로 장기 AWS 액세스 키를 사용할 수도 있어요.

출처: 문서

본문

장기 액세스 키를 만들면 액세스 키 ID(예: AKIA…)와 시크릿 액세스 키(예: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)가 한 쌍으로 생성돼요. 시크릿 액세스 키는 생성할 때에만 다운로드할 수 있습니다. 다운로드하지 않았거나 잃어버렸다면 새로 만들어야 해요.

많은 시나리오에서는 만료되지 않는 장기 액세스 키(IAM 사용자용 액세스 키처럼)가 사실 필요하지 않습니다. 대신 IAM 역할을 만들고 임시 보안 자격 증명을 생성할 수 있어요. 임시 보안 자격 증명은 액세스 키 ID와 시크릿 액세스 키를 포함하지만, 자격 증명이 언제 만료되는지를 나타내는 보안 토큰도 함께 포함합니다. 만료 후에는 더 이상 유효하지 않습니다. 자세한 내용은 장기 액세스 키의 대안을 참고하세요.

AKIA로 시작하는 액세스 키 ID는 IAM 사용자나 AWS 계정 루트 사용자의 장기 액세스 키이고, ASIA로 시작하는 액세스 키 ID는 AWS STS 작업으로 만든 임시 자격 증명 액세스 키입니다.

사용자가 AWS Management Console 밖에서 AWS와 상호작용하려면 프로그래밍 방식 접근이 필요해요. 프로그래밍 방식 접근을 부여하는 방법은 AWS에 접근하는 사용자 유형에 따라 달라집니다.

프로그래밍 방식 접근이 필요한 사용자 To By
IAM (권장) 콘솔 자격 증명을 임시 자격 증명으로 사용해 AWS CLI, AWS SDK, AWS API로의 프로그래밍 방식 요청에 서명합니다. 사용하려는 인터페이스의 안내를 따릅니다.
Workforce identity (IAM Identity Center에서 관리되는 사용자) 임시 자격 증명을 사용해 AWS CLI, AWS SDK, AWS API로의 프로그래밍 방식 요청에 서명합니다. 사용하려는 인터페이스의 안내를 따릅니다.
IAM 임시 자격 증명을 사용해 AWS CLI, AWS SDK, AWS API로의 프로그래밍 방식 요청에 서명합니다. IAM 사용자 가이드의 AWS 리소스와 함께 임시 자격 증명 사용 안내를 따릅니다.
IAM (권장하지 않음) 장기 자격 증명을 사용해 AWS CLI, AWS SDK, AWS API로의 프로그래밍 방식 요청에 서명합니다. 사용하려는 인터페이스의 안내를 따릅니다.

장기 액세스 키의 대안

많은 일반적인 사용 사례에서는 장기 액세스 키 대신 쓸 수 있는 방법이 있습니다. 계정 보안을 개선하려면 다음을 고려하세요.

  • 애플리케이션 코드나 코드 저장소에 장기 액세스 키·시크릿 액세스 키를 내장하지 마세요. 대신 AWS Secrets Manager나 다른 시크릿 관리 솔루션을 사용해서 키를 평문으로 하드코딩하지 않도록 해요. 그러면 애플리케이션·클라이언트가 필요할 때 시크릿을 가져올 수 있습니다. 자세한 내용은 AWS Secrets Manager 사용자 가이드의 AWS Secrets Manager란?을 참고하세요.
  • 가능하면 언제나 IAM 역할로 임시 보안 자격 증명을 생성하세요. 장기 액세스 키보다 임시 보안 자격 증명을 발급하는 메커니즘을 항상 우선 사용하세요. 임시 보안 자격 증명은 사용자에게 저장되지 않고 요청 시 동적으로 생성되어 제공되므로 더 안전합니다. 또한 수명이 제한적이라 관리하거나 갱신할 필요가 없어요. 임시 액세스 키를 제공하는 메커니즘에는 IAM 역할 또는 IAM Identity Center 사용자 인증이 있습니다. AWS 밖에서 실행되는 머신에는 AWS Identity and Access Management Roles Anywhere를 사용할 수 있어요.
  • AWS CLI 또는 aws-shell에는 장기 액세스 키 대신 대안을 사용하세요. 대안은 다음과 같습니다.
    • 콘솔 자격 증명으로 AWS 로컬 개발 로그인: AWS CLI 버전 2와 aws login 명령을 사용하면 콘솔 자격 증명으로 단기 자격 증명을 생성해 AWS CLI 명령을 실행할 수 있어요. 자세한 내용은 AWS Command Line Interface 사용자 가이드의 Login for AWS local development를 참고하세요.
    • AWS CloudShell: AWS Management Console에서 바로 실행할 수 있는 브라우저 기반의 사전 인증된 셸입니다. 선호하는 셸(Bash, Powershell, Z shell)로 AWS 서비스에 AWS CLI 명령을 실행할 수 있어요. 이 경우 명령줄 도구를 내려받거나 설치할 필요가 없습니다. 자세한 내용은 AWS CloudShell 사용자 가이드의 AWS CloudShell이란?을 참고하세요.
  • 애플리케이션이나 AWS 서비스에 접근해야 하는 사람 사용자를 위해 장기 액세스 키를 만들지 마세요. IAM Identity Center는 외부 IdP 사용자가 AWS 서비스에 접근할 수 있도록 임시 액세스 자격 증명을 생성할 수 있어요. 이렇게 하면 IAM에서 장기 자격 증명을 만들고 관리할 필요가 없습니다. IAM Identity Center에서 외부 IdP 사용자에게 접근 권한을 부여하는 권한 집합(permission set)을 만들고, 선택한 AWS 계정에서 IAM Identity Center 그룹을 해당 권한 집합에 할당하세요. 자세한 내용은 AWS IAM Identity Center 사용자 가이드의 AWS IAM Identity Center란, 외부 자격 증명 공급자 연결, 권한 집합을 참고하세요.
  • AWS 컴퓨팅 서비스 안에 장기 액세스 키를 저장하지 마세요. 대신 컴퓨팅 리소스에 IAM 역할을 할당하세요. 그러면 임시 자격 증명이 자동으로 공급되어 접근을 허용합니다. 예를 들어 Amazon EC2 인스턴스에 연결된 인스턴스 프로파일을 만들 때, 인스턴스에 AWS 역할을 할당해 모든 애플리케이션이 사용할 수 있게 할 수 있어요. 인스턴스 프로파일은 역할을 담고 있으며, Amazon EC2 인스턴스에서 실행되는 프로그램이 임시 자격 증명을 얻을 수 있게 해 줍니다. 자세한 내용은 IAM 역할을 사용해 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한 부여를 참고하세요.

더 알아보기 (Learn more)