AWS 자격 증명 사용 - AWS Tools for PowerShell

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

AWS 자격 증명 사용

각 AWS Tools for PowerShell 명령은 AWS 자격 증명 세트를 포함해야 합니다. 이러한 자격 증명 세트는 해당하는 웹 서비스 요청을 암호로 서명하는 데 사용됩니다. 명령별로, 세션별로, 또는 모든 세션에 대해 자격 증명을 지정할 수 있습니다.

주의

보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 AWS IAM Identity Center과 같은 보안 인증 공급자를 통한 페더레이션을 사용하세요.

참고

이 주제의 정보는 단기 또는 장기 보안 인증 정보를 수동으로 획득하고 관리해야 하는 상황을 위한 것입니다. 단기 및 장기 보안 인증 정보에 대한 자세한 내용은 AWS 및 도구 참조 가이드의 다른 인증 방법을 참조하세요.

모범 보안 사례는 도구 인증 구성에 설명된 대로 AWS IAM Identity Center를 사용하세요.

자격 증명이 노출되지 않도록 하기 위해 명령에 리터럴 자격 증명을 추가하지 않는 것이 좋습니다. 대신에, 사용할 각 자격 증명 세트에 대한 프로파일을 만들고 두 자격 증명 저장소 중 하나에 프로파일을 저장합니다. 명령에서 이름을 기준으로 올바른 프로파일을 지정하면 AWS Tools for PowerShell에서 관련 자격 증명을 검색합니다. AWS 보안 인증 정보를 안전하게 관리하는 방법에 대한 일반적인 설명은 Amazon Web Services 일반 참조에서 AWS 액세스 키 관리를 위한 모범 사례를 참조하세요.

참고

자격 증명을 얻어서 AWS Tools for PowerShell를 사용하려면 AWS 계정이 필요합니다. AWS 계정을 만들려면 AWS Account Management 계정 관리 참조 가이드에서 시작하기: AWS를 처음 사용하시나요?를 참조하세요.

자격 증명 저장소 위치

AWS Tools for PowerShell에서는 두 가지 자격 증명 저장소 중 하나를 사용할 수 있습니다.

  • 자격 증명을 암호화하여 홈 폴더에 저장하는 AWS SDK 저장소. Windows에서 이 저장소는 C:\Users\username\AppData\Local\AWSToolkit\RegisteredAccounts.json 위치에 있습니다.

    AWS SDK for .NETToolkit for Visual Studio에서도 AWS SDK 저장소를 사용할 수 있습니다.

  • 홈 폴더에 있지만 자격 증명 파일을 일반 텍스트로 저장하는 공유 자격 증명 파일.

    기본적으로 자격 증명 파일은 다음에 저장됩니다.

    • Windows: C:\Users\username\.aws\credentials

    • Mac/Linux: ~/.aws/credentials

    AWS SDK 및 AWS Command Line Interface에서도 자격 증명 파일을 사용할 수 있습니다. AWS 사용자 컨텍스트 외부에서 스크립트를 실행 중인 경우, 자격 증명을 포함하는 파일이 모든 사용자 계정(로컬 시스템 및 사용자)에서 해당 자격 증명에 액세스할 수 있는 위치로 복사되도록 해야 합니다.

프로파일 관리

프로파일은 AWS Tools for PowerShell을 사용하여 서로 다른 자격 증명 세트를 참조할 수 있도록 해줍니다. AWS Tools for PowerShell cmdlet을 사용하여 AWS SDK 저장소의 프로파일을 관리할 수 있습니다. 또한 Toolkit for Visual Studio를 사용하거나, AWS SDK for .NET을(를) 사용하여 프로그래밍 방식으로 AWS SDK 저장소를 관리할 수도 있습니다. 자격 증명 파일의 프로파일을 관리하는 방법에 대한 자세한 내용은 AWS 액세스 키 관리 모범 사례를 참조하세요.

새 프로파일 추가

새 프로파일을 AWS SDK 저장소에 추가하려면 Set-AWSCredential 명령을 실행합니다. 액세스 키와 보안 키를 지정한 프로파일 이름 아래의 기본 자격 증명 파일에 저장합니다.

PS > Set-AWSCredential ` -AccessKey AKIA0123456787EXAMPLE ` -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ` -StoreAs MyNewProfile
  • -AccessKey - 액세스 키 ID입니다.

  • -SecretKey - 보안 키입니다.

  • -StoreAs - 프로파일 이름으로, 고유해야 합니다. 기본 프로파일을 지정하려면 이름 default를 사용합니다.

프로파일 업데이트

AWS SDK 저장소는 수동으로 관리해야 합니다. 나중에 서비스의 자격 증명을 변경하는 경우(예: IAM 콘솔 사용) 로컬에 저장된 자격 증명으로 명령을 실행하면 실패하고 다음 오류 메시지가 표시됩니다.

The Access Key Id you provided does not exist in our records.

프로파일에 대해 Set-AWSCredential 명령을 반복하고 새 액세스 및 보안 키를 전달하여 프로파일을 업데이트할 수 있습니다.

프로파일 나열

다음 명령을 사용하여 현재 이름 목록을 확인할 수 있습니다. 이 예에서 Shirley라는 사용자는 세 개의 프로파일에 액세스할 수 있으며, 이들은 모두 공유 자격 증명 파일(~/.aws/credentials)에 저장되어 있습니다.

PS > Get-AWSCredential -ListProfileDetail ProfileName StoreTypeName ProfileLocation ----------- ------------- --------------- default SharedCredentialsFile /Users/shirley/.aws/credentials production SharedCredentialsFile /Users/shirley/.aws/credentials test SharedCredentialsFile /Users/shirley/.aws/credentials

프로파일 제거

더 이상 필요하지 않은 프로파일을 제거하려면 다음 명령을 사용합니다.

PS > Remove-AWSCredentialProfile -ProfileName an-old-profile-I-do-not-need

-ProfileName 파라미터는 삭제할 프로파일을 지정합니다.

더 이상 사용되지 않는 명령 Clear-AWSCredential은 이전 버전과의 호환성을 위해 계속 제공되지만, Remove-AWSCredentialProfile가 선호됩니다.

자격 증명 지정

자격 증명을 지정하는 방법에는 몇 가지가 있습니다. 기본 방법은 리터럴 자격 증명을 명령줄에 통합하는 대신 프로파일을 식별하는 것입니다. AWS Tools for PowerShell은 자격 증명 검색 순서에 설명된 검색 순서사용해 프로파일을 찾습니다.

Windows에서는 AWS SDK 저장소에 저장된 AWS 자격 증명이 로그인한 Windows 사용자 자격 증명으로 암호화됩니다. 이러한 암호는 다른 계정을 사용하여 해독할 수 없으며, 원래 생성된 계정과 다른 디바이스에서 사용할 수 없습니다. 예약된 작업이 실행될 사용자 계정과 같은 다른 사용자의 작업 증명이 필요한 작업을 수행하려면 해당 사용자로서 컴퓨터에 로그인할 때 사용할 수 있는 자격 증명 프로파일(이전 단원에서 설명)을 설정합니다. 작업 수행 사용자로 로그인하여 자격 증명 설정 단계를 완료하고 해당 사용자에게 적합한 프로파일을 생성합니다. 그런 다음 로그아웃을 하고 사용자 고유의 자격 증명으로 다시 로그인하여 예약된 작업을 설정합니다.

참고

프로파일을 지정하려면 -ProfileName 명령 파라미터를 사용합니다. 이 파라미터는 이전 AWS Tools for PowerShell 릴리스의 -StoredCredentials 파라미터와 동일합니다. 이전 버전과의 호환성을 위해 -StoredCredentials도 여전히 지원됩니다.

자격 증명이 AWS라는 이름의 프로파일에 저장되어 있는 경우, 모든 default SDK 및 관리 도구는 로컬 컴퓨터에서 자격 증명을 자동으로 찾아줍니다. 예를 들어 로컬 컴퓨터에 default라는 이름의 프로파일이 있으면 Initialize-AWSDefaultConfiguration cmdlet이나 Set-AWSCredential cmdlet을 실행할 필요가 없습니다. 이들 도구는 해당 프로파일에 저장된 액세스 및 보안 키 데이터를 자동으로 사용합니다. 기본 리전(Get-DefaultAWSRegion의 결과) 이외의 AWS 리전을 사용하려면 Set-DefaultAWSRegion을 실행하고 리전을 지정합니다.

프로파일의 이름이 default가 아니지만 현재 세션의 기본 프로파일로 사용하려면 Set-AWSCredential을 실행하여 기본 프로파일로 설정합니다.

Initialize-AWSDefaultConfiguration을 실행하면 모든 PowerShell 세션의 기본 프로파일을 지정할 수 있습니다. 그러면 cmdlet은 사용자 지정 이름 프로파일에서 자격 증명을 로드하지만, default 프로파일을 명명된 프로파일로 덮어씁니다.

인스턴스 프로파일 없이 출시된 Amazon EC2 인스턴스의 PowerShell 세션을 실행하는 중이거나 자격 증명 프로파일을 수동으로 설정하고자 하는 경우가 아니면 Initialize-AWSDefaultConfiguration을 실행하지 않는 것이 좋습니다. 이 경우 자격 증명 프로파일에는 자격 증명이 포함되어 있지 않다는 점에 유의하십시오. EC2 인스턴스에서 Initialize-AWSDefaultConfiguration을 실행한 결과로 생성되는 자격 증명 프로파일은 자격 증명을 직접 저장하지 않고 인스턴스 메타데이터(자동으로 교체되는 임시 자격 증명을 제공)를 가리킵니다. 하지만 인스턴스의 리전은 저장합니다. 인스턴스가 실행 중인 리전 이외의 리전에 대하여 호출을 실행하고 싶으면 Initialize-AWSDefaultConfiguration를 실행해야 하는 또 다른 상황이 발생할 수 있습니다. 이 명령을 실행하면 인스턴스 메타데이터에 저장된 리전이 영구적으로 재정의됩니다.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
참고

기본 자격 증명은 AWS SDK 저장소에 default 프로파일 이름으로 포함되어 있습니다. 이 명령은 기존 프로파일을 해당 이름으로 덮어씁니다.

EC2 인스턴스가 인스턴스 프로파일을 사용해 시작된 경우, PowerShell은 인스턴스 프로파일에서 AWS 자격 증명 및 리전 정보를 자동으로 가져옵니다. 따라서 Initialize-AWSDefaultConfiguration를 실행할 필요가 없습니다. 인스턴스 프로파일을 사용해 시작된 EC2 인스턴스에서 Initialize-AWSDefaultConfiguration cmdlet을 실행할 필요가 없습니다. PowerShell이 기본적으로 사용하고 있는 것과 동일한 인스턴스 프로파일 데이터를 사용하기 때문입니다.

세션 프로파일

Set-AWSCredential을 사용하여 특정 세션에 대한 기본 프로파일을 지정합니다. 이 프로파일이 세션 기간 동안 기본 프로파일을 재정의합니다. 현재 default 프로파일을 대신하여 세션에서 사용자가 이름을 지정한 프로파일을 사용하려는 경우에 권장합니다.

PS > Set-AWSCredential -ProfileName MyProfileName
참고

1.1 이전 버전의 Tools for Windows PowerShell에서는 Set-AWSCredential cmdlet이 올바르게 작동하지 않아서 "MyProfileName"에 의해 지정된 프로파일을 덮어씁니다. 최신 버전 Tools for Windows PowerShell을 사용하는 것이 좋습니다.

명령 프로파일

개별 명령에서 -ProfileName 파라미터를 추가하여 해당되는 단일 명령에만 적용되는 프로파일을 지정할 수 있습니다. 이 프로파일은 다음 예제에서와 같이 기본 또는 세션 프로파일을 재정의합니다.

PS > Get-EC2Instance -ProfileName MyProfileName
참고

기본 또는 세션 프로파일을 지정할 때는 -Region 파라미터를 추가하여 기본 또는 세션 리전을 지정할 수도 있습니다. 자세한 내용은 AWS 지역 지정하기 섹션을 참조하세요. 다음 예제에서는 기본 프로파일 및 리전을 지정합니다.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2

기본적으로 AWS 공유 자격 증명 파일이 사용자의 홈 폴더(Windows의 C:\Users\username\.aws 또는 Linux의 ~/.aws)에 있다고 가정합니다. 다른 위치에 자격 증명 파일을 지정하려면 -ProfileLocation 파라미터를 포함시키고 자격 증명 파일 경로를 지정합니다. 다음 예제에서는 특정 명령에 대한 기본 이외의 자격 증명 파일을 지정합니다.

PS > Get-EC2Instance -ProfileName MyProfileName -ProfileLocation C:\aws_service_credentials\credentials
참고

일반적으로 AWS에 로그인하지 않은 상태에서 PowerShell 스크립트를 실행 중인 경우(예를 들면 일반 업무 시간 이외에 예약된 작업으로서 PowerShell 스크립트를 실행 중인 경우), 사용할 프로파일을 지정할 때 -ProfileLocation 파라미터를 추가하고 값을 자격 증명을 저장할 파일의 경로로 설정합니다. AWS Tools for PowerShell 스크립트가 올바른 계정 자격 증명을 사용하여 실행되도록 하려면 -ProfileLocation 계정을 사용하지 않는 컨텍스트나 프로세스에서 스크립트를 실행할 때마다 AWS 파라미터를 추가해야 합니다. 또한 로컬 시스템에 액세스할 수 있는 위치 또는 스크립트가 작업을 수행하는 데 사용하는 다른 계정으로 자격 증명 파일을 복사할 수도 있습니다.

자격 증명 검색 순서

명령을 실행하면 AWS Tools for PowerShell는 다음 순서로 자격 증명을 검색합니다. 사용 가능한 자격 증명을 찾으면 중지됩니다.

  1. 명령줄에 파라미터로 내장된 리터럴 자격 증명입니다.

    가급적이면 명령줄에 리터럴 자격 증명을 추가하기 보다는 프로파일을 사용하는 것이 좋습니다.

  2. 지정된 프로파일 이름 또는 프로파일 위치.

    • 프로파일 이름만 지정할 경우 이 명령은 AWS SDK 저장소의 지정된 프로파일을 찾고 여기에 지정된 프로파일이 없으면 기본 위치의 AWS 공유 자격 증명 파일에서 지정된 프로파일을 찾습니다.

    • 프로파일 위치만 지정하는 경우, 이 명령은 해당 자격 증명 파일에서 default 프로파일을 찾습니다.

    • 이름과 위치를 모두 지정하는 경우, 이 명령은 해당 자격 증명 파일에서 지정된 프로파일을 찾습니다.

    지정된 프로파일이나 위치가 없으면 명령에서 예외가 발생합니다. 프로파일이나 위치를 지정하지 않은 경우에만 검색이 다음 단계로 이동합니다.

  3. -Credential 파라미터에서 지정된 자격 증명.

  4. 세션 프로파일(존재하는 경우).

  5. 기본 프로파일(다음 순서대로).

    1. default SDK 저장소의 AWS 프로파일.

    2. default 공유 자격 증명 파일의 AWS 프로파일.

    3. AWS PS Default SDK 저장소의 AWS 프로파일.

  6. IAM 역할을 사용하도록 구성된 Amazon EC2 인스턴스에서 명령이 실행 중인 경우, 인스턴스 프로파일로부터 액세스한 EC2 인스턴스의 임시 자격 증명입니다.

    Amazon EC2 인스턴스에 IAM 역할 사용에 대한 자세한 내용은 AWS SDK for .NET 단원을 참조하세요.

이 검색을 통해 지정된 자격 증명을 찾지 못한 경우 명령에서 예외가 발생합니다.

AWS Tools for PowerShell Core의 자격 증명 처리

AWS Tools for PowerShell Core의 cmdlet은 AWS과 유사하게 AWS Tools for Windows PowerShell 액세스 키 및 보안 키나 실행 시 자격 증명 프로파일의 이름을 수락합니다. Windows에서 실행될 때 두 모듈 모두 AWS SDK for .NET 자격 증명 저장소 파일(사용자별 AppData\Local\AWSToolkit\RegisteredAccounts.json 파일에 저장)에 액세스할 수 있습니다.

이 파일은 키를 암호화된 형식으로 저장하므로 다른 컴퓨터에서는 사용할 수 없습니다. 이 파일은 AWS Tools for PowerShell에서 자격 증명 프로파일을 검색하는 첫 번째 파일이자, AWS Tools for PowerShell에서 자격 증명 프로파일을 저장하는 파일이기도 합니다. AWS SDK for .NET 자격 증명 저장소 파일에 대한 자세한 내용은 AWS 자격 증명 구성을 참조하세요. 현재 Tools for Windows PowerShell 모듈에서는 다른 파일이나 위치에 자격 증명 쓰기를 지원하지 않습니다.

두 모듈 모두 다른 AWS SDK 및 AWS에서 사용되는 AWS CLI 공유 자격 증명 파일에서 프로파일을 읽어올 수 있습니다. Windows에서 이 파일의 기본 위치는 C:\Users\<userid>\.aws\credentials입니다. Windows 이외의 플랫폼에서는 이 파일이 ~/.aws/credentials에 저장됩니다. -ProfileLocation 파라미터를 사용하여 기본값이 아닌 파일 이름이나 파일 위치를 가리킬 수 있습니다.

SDK 자격 증명 저장소는 Windows 암호화 API를 사용하여 자격 증명을 암호화된 형태로 보관합니다. 이러한 API는 다른 플랫폼에서 사용할 수 없으므로 AWS Tools for PowerShell Core 모듈에서는 AWS 공유 자격 증명 파일만을 전적으로 사용하고 공유 자격 증명 파일에 새 자격 증명 프로파일을 쓸 수 있도록 지원합니다.

Set-AWSCredential cmdlet을 사용하는 다음 예제에서는 AWSPowerShell 또는 AWSPowerShell.NetCore 모듈을 사용하여 Windows에서 자격 증명 프로파일을 처리하는 옵션을 보여 줍니다.

# Writes a new (or updates existing) profile with name "myProfileName" # in the encrypted SDK store file Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Checks the encrypted SDK credential store for the profile and then # falls back to the shared credentials file in the default location Set-AWSCredential -ProfileName myProfileName # Bypasses the encrypted SDK credential store and attempts to load the # profile from the ini-format credentials file "mycredentials" in the # folder C:\MyCustomPath Set-AWSCredential -ProfileName myProfileName -ProfileLocation C:\MyCustomPath\mycredentials

다음 예제에서는 Linux 또는 macOS 운영 체제에서 AWSPowerShell.NetCore 모듈의 작동을 보여 줍니다.

# Writes a new (or updates existing) profile with name "myProfileName" # in the default shared credentials file ~/.aws/credentials Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Writes a new (or updates existing) profile with name "myProfileName" # into an ini-format credentials file "~/mycustompath/mycredentials" Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName -ProfileLocation ~/mycustompath/mycredentials # Reads the default shared credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName # Reads the specified credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName -ProfileLocation ~/mycustompath/mycredentials