

# IAM 사용자
<a name="id_users"></a>

**중요**  
 IAM [모범 사례](best-practices.md)는 장기 보안 인증 정보가 있는 IAM 사용자를 사용하는 대신, 인간 사용자가 자격 증명 공급자와의 페더레이션을 사용하여 임시 보안 인증으로 AWS에 액세스하도록 하는 것입니다. 페더레이션 사용자가 지원하지 않는 [특정 사용 사례](gs-identities-iam-users.md)에는 IAM 사용자만 사용하는 것이 좋습니다.

*IAM 사용자*는 AWS 계정에서 생성하는 엔터티입니다. IAM 사용자는 AWS 리소스와 상호 작용하기 위해 IAM 사용자를 사용하는 인간 사용자 또는 워크로드를 나타냅니다. IAM 사용자는 이름 및 자격 증명으로 구성됩니다.

관리자 권한이 있는 IAM 사용자는 AWS 계정 루트 사용자과 같지 않습니다. 루트 사용자에 대한 자세한 내용은 [AWS 계정 루트 사용자](id_root-user.md) 섹션을 참조하세요.

## AWS가 IAM 사용자를 식별하는 방법
<a name="id_users_create_aws-identifiers"></a>

사용자를 생성하면 IAM은 해당 사용자를 식별하는 다음과 같은 방법을 생성합니다.
+ IAM 사용자 생성 시 지정한 이름으로서 `Richard` 또는 `Anaya`와 같은 IAM 사용자가 "쉽게 알 수 있는 이름"입니다. 이 이름들은 AWS Management Console에서 볼 수 있습니다. IAM 사용자 이름은 Amazon 리소스 이름(ARN)에 표시되므로 IAM 이름에 개인 식별 정보를 포함하지 않는 것이 좋습니다. IAM 이름에 대한 요구 사항 및 제한 사항은 [IAM 이름 요구 사항](reference_iam-quotas.md#reference_iam-quotas-names) 섹션을 참조하세요.
+ IAM 사용자의 Amazon 리소스 이름(ARN)입니다. 모든 AWS 전반에 IAM 사용자를 특별하게 식별할 필요가 있는 경우 ARN을 사용합니다. 예를 들어, ARN을 사용하여 IAM 사용자를 Amazon S3 버킷의 IAM 정책에서 `Principal`로 지정할 수 있습니다. IAM 사용자의 ARN은 다음과 같을 수 있습니다.

  `arn:aws:iam::account-ID-without-hyphens:user/Richard`
+ IAM 사용자의 고유 식별자입니다. 이 ID는 IAM 사용자를 생성하기 위해 API, Tools for Windows PowerShell 또는 AWS CLI를 사용할 때만 반환됩니다. 콘솔에서는 이 ID를 볼 수 없습니다.

이 식별자에 대한 자세한 정보는 [IAM 식별자](reference_identifiers.md) 섹션을 참조하세요.

## IAM 사용자 및 보안 인증
<a name="id_users_creds"></a>

AWS는 IAM 사용자 보안 인증에 따라 다양한 방법으로 액세스할 수 있습니다.
+ [**콘솔 암호**](id_credentials_passwords.md): IAM 사용자가 입력해 AWS Management Console과 같은 상호 작용 세션으로 로그인할 수 있는 암호. IAM 사용자의 암호(콘솔 액세스)를 비활성화하면 사용자가 해당 로그인 보안 인증을 사용하여 AWS Management Console에 로그인하지 못합니다. 그렇더라도 사용자의 권한이 변경되거나 위임된 역할을 사용하여 콘솔에 액세스하지 못하게 되지는 않습니다. 콘솔 액세스가 활성화된 IAM 사용자는 이러한 동일한 자격 증명을 사용하여 `aws login` AWS CLI 명령으로 AWS CLI 및 SDK 액세스를 인증할 수도 있습니다. 이러한 사용자는 [SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/SignInLocalDevelopmentAccess.html) 권한이 있어야 합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 인증 및 액세스 제어](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html)를 참조하세요.
+ [**액세스 키**](id_credentials_access-keys.md): 프로그래밍 방식으로 AWS를 호출하는 데 사용됩니다. 그러나 IAM 사용자를 위한 액세스 키를 생성하기 전에 고려해야 할 더 안전한 대안이 있습니다. 자세한 내용은 **AWS 일반 참조의 [장기 액세스 키에 대한 고려 사항 및 대안](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys)을 참조하세요. IAM 사용자에게 활성 액세스 키가 있다면 해당 키는 계속 작동하고 AWS CLI, Tools for Windows PowerShell 또는 AWS API 또는 AWS Console Mobile Application을 통해 액세스를 허용합니다.
+ [**CodeCommit에 사용할 SSH 키**](id_credentials_ssh-keys.md): CodeCommit를 사용한 인증에 사용할 수 있는 OpenSSH 형식의 SSH 퍼블릭 키
+ [**서버 인증서**](id_credentials_server-certs.md): 일부 AWS 서비스를 사용한 인증에 사용할 수 있는 SSL/TLS 인증서. 서버 인증서를 프로비저닝, 관리 및 배포할 때 AWS Certificate Manager(ACM)를 사용하는 것이 좋습니다. ACM에서 지원하지 않는 리전에서 HTTPS 연결을 지원해야 하는 경우에만 IAM을 사용합니다. ACM을 지원하는 리전을 알아보려면 **AWS 일반 참조의 [AWS Certificate Manager 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/acm.html)을 참조하세요.

IAM 사용자에게 적절한 자격 증명을 선택할 수 있습니다. AWS Management Console을 사용하여 IAM 사용자를 생성할 때 최소한 콘솔 암호 또는 액세스 키를 포함하도록 선택해야 합니다. 기본적으로 AWS CLI 또는 AWS API를 사용하여 새로 생성된 IAM 사용자는 어떤 종류의 자격 증명도 보유하지 않습니다. 사용자의 사용 사례를 기반으로 IAM 사용자의 보안 인증 유형을 생성해야 합니다.

다음 옵션을 이용해 암호, 액세스 키 및 다중 인증(MFA) 디바이스를 관리합니다.
+ **[IAM 사용자 암호 관리.](id_credentials_passwords.md)** AWS Management Console에 대한 액세스를 허용하는 암호를 생성 및 변경합니다. 암호 정책을 최소 암호 복잡성을 적용하도록 설정 IAM 사용자에게 자신의 암호를 변경할 수 있도록 허용합니다.
+ **[IAM 사용자의 액세스 키 관리.](id_credentials_access-keys.md)** 계정의 리소스에 대한 프로그래밍 방식의 액세스를 위해 액세스 키를 생성하고 업데이트합니다.
+ **[IAM 사용자에 대해 다중 인증(MFA)을 활성화합니다](id_credentials_mfa.md).** [가장 좋은 방법](best-practices.md)은 계정에 속한 모든 IAM 사용자에게 다중 인증(MFA)을 요구하는 것입니다. MFA를 사용할 경우 IAM 사용자는 두 가지 형식의 식별이 가능합니다. 먼저, 사용자는 사용자 ID의 일부분인 자격 증명(암호 또는 액세스 키)을 제공합니다. 또한 하드웨어 디바이스 또는 스마트폰이나 태블릿의 애플리케이션에서 생성된 임시 숫자 코드를 제공합니다.
+ **[미사용 암호 및 액세스 키 찾기](id_credentials_finding-unused.md).** 계정 또는 계정 내 IAM 사용자의 암호 또는 액세스 키를 보유하는 사람은 누구든지 AWS 리소스에 액세스할 수 있습니다. 보안 [모범 사례](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)는 IAM 사용자에게 암호 및 액세스 키가 필요하지 않을 때 해당 항목을 제거하는 것입니다.
+ **[계정의 자격 증명 보고서 다운로드](id_credentials_getting-report.md).** 계정의 모든 IAM 사용자와 해당 사용자의 암호, 액세스 키, MFA 디바이스 등 다양한 자격 증명의 상태를 나열하는 자격 증명 보고서를 생성하고 다운로드할 수 있습니다. 암호와 액세스 키의 경우 자격 증명 보고서를 통해 암호 또는 액세스 키가 언제 마지막으로 사용되었는지 알 수 있습니다.

## IAM 사용자 및 권한
<a name="id_users_perms"></a>

기본적으로 새로운 IAM 사용자는 작업을 수행할 어떠한 [권한](access.md)도 없습니다. 사용자는 AWS 작업을 수행하거나 AWS 리소스에 액세스할 수 있는 권한이 없습니다. 개별 IAM 사용자를 두면 각 사용자에게 개별적으로 권한을 할당할 수 있다는 장점이 있습니다. 사용자 몇 명에게 관리 권한을 할당하면 이들이 AWS 리소스를 관리하고 다른 IAM 사용자까지 생성하고 관리할 수 있습니다. 그러나 대부분의 경우 사용자의 업무에 필요한 작업(AWS 작업) 및 리소스로만 사용자의 권한을 제한합니다.

Diego라는 사용자가 있다고 가정해 보겠습니다. IAM 사용자 `Diego`를 생성할 때 해당 사용자에 대한 암호를 생성하고 권한을 연결하여 특정 Amazon EC2 인스턴스를 시작하고 Amazon RDS 데이터베이스의 테이블에서 (`GET`) 정보를 읽을 수 있도록 할 수 있습니다. IAM 사용자를 생성하여 초기 자격 증명과 권한을 부여하는 절차는 [AWS 계정에서 IAM 사용자 생성](id_users_create.md) 섹션을 참조하세요. 기존 사용자에 대한 권한을 변경하는 절차는 [IAM 사용자의 권한 변경](id_users_change-permissions.md) 섹션을 참조하세요. 사용자의 암호나 액세스 키를 변경하는 절차는 [AWS의 사용자 암호](id_credentials_passwords.md) 및 [IAM 사용자의 액세스 키 관리](id_credentials_access-keys.md) 섹션을 참조하세요.

IAM 사용자에게 권한 경계를 추가할 수 있습니다. 권한 경계는 AWS 관리형 정책을 사용하여 자격 증명 기반 정책이 IAM 사용자 또는 역할에 부여할 수 있는 최대 권한을 제한할 수 있는 고급 기능입니다. 정책 유형 및 활용에 대한 자세한 정보는 [AWS Identity and Access Management의 정책 및 권한](access_policies.md) 섹션을 참조하세요.

## IAM 사용자 및 계정
<a name="id_users_accounts"></a>

각 IAM 사용자는 오직 한 개의 AWS 계정과만 연결됩니다. IAM 사용자는 AWS 계정 내에서 정의되기 때문에 AWS에서 파일에 결제 방법을 저장해 두지 않아도 됩니다. 계정에 속한 IAM 사용자가 수행하는 모든 AWS 활동은 해당 계정으로 청구됩니다.

AWS 계정의 IAM 리소스 수와 크기는 제한되어 있습니다. 자세한 내용은 [IAM 및 AWS STS 할당량](reference_iam-quotas.md) 섹션을 참조하세요.

## 서비스 계정인 IAM 사용자
<a name="id_users_service_accounts"></a>

IAM 사용자는 연결된 자격 증명 및 권한을 지닌 IAM의 리소스입니다. IAM 사용자는 자격 증명을 사용하여 AWS에 요청하는 사용자 또는 애플리케이션을 나타낼 수 있습니다. 이를 일반적으로 *서비스 계정*이라 합니다. 애플리케이션에서 IAM 사용자의 장기 자격 증명을 사용하기로 선택한 경우 **액세스 키를 애플리케이션 코드에 직접 포함하지 마세요.** AWS SDK 및 AWS Command Line Interface를 사용하면 코드에서 유지할 필요가 없도록 알려진 위치에 액세스 키를 추가할 수 있습니다. 자세한 내용은 **AWS 일반 참조의 [적절하게 IAM 사용자 액세스 키 관리](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#iam-user-access-keys)를 참조하세요. 또는 모범 사례로서 [장기 액세스 키 대신 임시 보안 자격 증명(IAM 역할)을 사용](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles)할 수 있습니다.

# IAM 사용자가 AWS에 로그인하는 방법
<a name="id_users_sign-in"></a>

IAM 사용자로 AWS Management Console에 로그인하려면 사용자 이름과 암호 이외에 계정 ID 또는 계정 별칭을 제공해야 합니다. 관리자가 콘솔에서 IAM 사용자를 생성한 경우, 계정 ID 또는 계정 별칭이 포함된 계정 로그인 페이지의 URL, 사용자 이름 등을 비롯한 로그인 자격 증명을 전송했을 것입니다.

```
https://My_AWS_Account_ID.signin.aws.amazon.com/console/
```

**도움말**  
웹 브라우저에서 계정 로그인 페이지를 위한 북마크를 만들려면 북마크 입력란에 계정의 로그인 URL을 직접 입력해야 합니다. 리디렉션은 로그인 URL을 가릴 수 있으므로 웹 브라우저 북마크 기능을 사용하지 마세요.

다음의 일반 로그인 엔드포인트에서 로그인하고 계정 ID 또는 계정 별칭을 직접 입력할 수도 있습니다.

```
[https://console.aws.amazon.com/](https://console.aws.amazon.com/)
```

사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 다음에 사용자가 AWS Management Console의 아무 페이지로든 이동하면 콘솔이 쿠키를 사용하여 사용자를 사용자 로그인 페이지로 리디렉션합니다.

IAM 사용자 자격 증명에 연결된 정책에서 관리자가 지정하는 AWS 리소스에만 액세스할 수 있습니다. 콘솔에서 작업하려면 AWS 리소스 나열 및 생성 등 콘솔이 수행하는 작업을 수행할 권한이 있어야 합니다. 자세한 내용은 [AWS리소스에 대한 액세스 관리](access.md) 및 [IAM 자격 증명 기반 정책의 예](access_policies_examples.md) 섹션을 참조하세요.

**참고**  
조직에 기존의 자격 증명 시스템이 있는 경우, Single Sign-On(SSO) 옵션을 만드는 것이 좋습니다. SSO는 IAM 사용자 자격 증명이 없어도 계정의 AWS Management Console에 액세스할 수 있는 권한을 사용자에게 제공합니다. 또한 SSO를 사용하면 사용자가 조직의 사이트와 AWS에 따로 로그인하지 않아도 됩니다. 자세한 내용은 [AWS 콘솔에 대한 사용자 지정 ID 브로커 액세스 활성화](id_roles_providers_enable-console-custom-url.md) 단원을 참조하십시오.

**CloudTrail에 로그인 세부 정보 로깅**  
CloudTrail에서 로그인 이벤트를 로그에 기록하도록 설정한 경우 CloudTrail에서 이벤트를 기록할 위치를 선택하는 방법을 알고 있어야 합니다.
+ 사용자가 콘솔에 직접 로그인할 경우 선택한 서비스 콘솔이 리전을 지원하는지 여부를 기준으로 글로벌 또는 리전 로그인 종단점으로 리디렉션됩니다. 예를 들어 메인 콘솔 홈 페이지는 리전을 지원합니다. 따라서 다음 URL에 로그인할 경우

  ```
  https://alias.signin.aws.amazon.com/console
  ```

  `https://us-east-2.signin.aws.amazon.com`과 같은 리전 로그인 엔드포인트로 리디렉션되어 사용자의 리전 로그에 리전 CloudTrail 로그 항목이 기록됩니다.

  반면 Amazon S3 콘솔은 리전을 지원하지 않습니다. 따라서 다음 URL에 로그인할 경우

  ```
  https://alias.signin.aws.amazon.com/console/s3
  ```

  AWS가 `https://signin.aws.amazon.com`의 글로벌 로그인 엔드포인트로 사용자를 리디렉션하여 글로벌 CloudTrail 로그 항목이 기록됩니다.
+ 다음과 같은 URL 구문을 사용하여 리전이 활성화된 메인 콘솔 홈 페이지에 로그인하면 특정 리전 로그인 종단점을 수동으로 요청할 수 있습니다.

  ```
  https://alias.signin.aws.amazon.com/console?region=ap-southeast-1
  ```

  AWS가 사용자를 `ap-southeast-1` 리전 로그인 엔드포인트로 리디렉션하고 리전 CloudTrail 로그 이벤트가 발생합니다.

CloudTrail 및 IAM에 대한 자세한 내용은 [CloudTrail로 IAM 이벤트 로깅](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html)을 참조하세요.

계정을 통해 사용자가 작업하기 위해 프로그래밍 방식의 액세스가 필요한 경우 각 사용자의 액세스 키 페어(액세스 키 ID와 보안 액세스 키)를 생성할 수 있습니다. 그러나 사용자를 위한 액세스 키를 생성하기 전에 고려해야 할 더 안전한 대안이 있습니다. 자세한 내용은 **AWS 일반 참조의 [장기 액세스 키에 대한 고려 사항 및 대안](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys)을 참조하세요.

## 추가 리소스
<a name="id_users_sign-in-additional-resources"></a>

다음 리소스는 AWS 로그인에 대해 자세히 알아보는 데 도움을 줄 수 있습니다.
+ [AWS Sign-In 사용 설명서](https://docs.aws.amazon.com/signin/latest/userguide/what-is-sign-in.html)는 사용자 유형에 따라 Amazon Web Services (AWS)에 로그인할 수 있는 다양한 방법을 이해하는 데 도움을 줍니다.
+ AWS Management Console의 단일 웹 브라우저에서 최대 5개의 서로 다른 자격 증명을 동시에 로그인할 수 있습니다. 자세한 내용은 *AWS Management Console 시작 안내서*의 [Signing in to multiple accounts](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html)를 참조하세요.

# MFA 지원 로그인
<a name="console_sign-in-mfa"></a>

[멀티 팩터 인증(MFA)](id_credentials_mfa.md) 디바이스를 사용하여 구성된 사용자는 MFA 디바이스를 사용하여 AWS Management Console에 로그인해야 합니다. 사용자가 자신의 로그인 보안 인증 정보를 입력하면 AWS는 해당 사용자의 계정에서 해당 사용자에게 MFA가 필요한지를 확인합니다.

**중요**  
AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) API 직접 호출로 AWS Management Console에 직접 액세스하는 데 액세스 키 및 비밀 키 자격 증명을 사용하는 경우 MFA가 필요하지 않습니다. 자세한 내용은 [콘솔 액세스에 액세스 키 및 비밀 키 자격 증명 사용](securing_access-keys.md#console-access-security-keys) 단원을 참조하십시오.

다음 주제에서는 MFA가 필요할 때 사용자가 로그인을 완료하는 방법에 대한 정보를 제공합니다.

**Topics**
+ [다중 MFA 디바이스 활성화](#console_sign-in-multiple-mfa)
+ [FIDO 보안 키](#console_sign-in-mfa-fido)
+ [가상 MFA 디바이스](#console_sign-in-mfa-virtual)
+ [하드웨어 TOTP 토큰](#console_sign-in-mfa-hardware)

## 다중 MFA 디바이스 활성화
<a name="console_sign-in-multiple-mfa"></a>

사용자가 AWS 계정 루트 사용자 또는 해당 계정에 대해 활성화된 여러 MFA 디바이스가 있는 IAM 사용자로 AWS Management Console에 로그인하는 경우 하나의 MFA 디바이스만 사용하여 로그인하면 됩니다. 사용자가 사용자 암호로 인증한 후 인증을 완료하는 데 사용할 MFA 디바이스 유형을 선택합니다. 그런 다음 사용자에게 선택한 디바이스 유형으로 인증하라는 메시지가 표시됩니다.

## FIDO 보안 키
<a name="console_sign-in-mfa-fido"></a>

MFA가 필요한 사용자에게는 두 번째 로그인 페이지가 나타납니다. 사용자가 FIDO 보안 키를 터치해야 합니다.

**참고**  
Google Chrome 사용자는 **amazon.com으로 아이덴티티 확인(Verify your identity with amazon.com)**을 요청하는 팝업에서 사용 가능한 옵션을 선택해서는 안 됩니다. 보안 키를 탭하기만 하면 됩니다.

다른 MFA 디바이스와 달리 FIDO 보안 키는 항상 동기화되어 있습니다. FIDO 보안 키를 분실했거나 도난당한 경우 관리자가 비활성화할 수 있습니다. 자세한 내용은 [MFA 디바이스 비활성화(콘솔)](id_credentials_mfa_disable.md#deactive-mfa-console) 단원을 참조하십시오.

WebAuthn을 지원하는 브라우저와 AWS에서 지원하는 FIDO 준수 디바이스에 대한 자세한 내용을 알아보려면 [패스키 및 보안 키 사용이 지원되는 구성](id_credentials_mfa_fido_supported_configurations.md) 섹션을 참조하세요.

## 가상 MFA 디바이스
<a name="console_sign-in-mfa-virtual"></a>

MFA가 필요한 사용자에게는 두 번째 로그인 페이지가 나타납니다. **MFA code(MFA 코드)** 상자에 MFA 애플리케이션에서 제공한 숫자 코드를 입력해야 합니다.

MFA 코드가 올바르면 사용자는 AWS Management Console에 액세스할 수 있습니다. 코드가 올바르지 않으면 다른 코드로 다시 시도할 수 있습니다.

가상 MFA 디바이스는 동기화되지 않을 수 있습니다. 여러 번 시도한 후에도 사용자가 AWS Management Console에 로그인할 수 없으면 가상 MFA 디바이스를 동기화하라는 메시지가 표시됩니다. 사용자는 화면에 표시되는 메시지에 따라 가상 MFA 디바이스를 동기화할 수 있습니다. AWS 계정에 속한 사용자 대신 디바이스를 동기화할 수 있는 방법에 대한 자세한 내용은 [가상 및 하드웨어 MFA 디바이스 재동기화](id_credentials_mfa_sync.md) 섹션을 참조하세요.

## 하드웨어 TOTP 토큰
<a name="console_sign-in-mfa-hardware"></a>

MFA가 필요한 사용자에게는 두 번째 로그인 페이지가 나타납니다. **MFA code**(MFA 코드) 상자에 하드웨어 TOTP 토큰에서 제공한 숫자 코드를 입력해야 합니다.

MFA 코드가 올바르면 사용자는 AWS Management Console에 액세스할 수 있습니다. 코드가 올바르지 않으면 다른 코드로 다시 시도할 수 있습니다.

하드웨어 TOTP 토큰이 동기화되지 않을 수 있습니다. 여러 번 시도하여 실패한 후에도 사용자가 AWS Management Console에 로그인할 수 없으면 MFA 토큰 디바이스를 동기화하라는 메시지가 표시됩니다. 사용자는 화면에 표시되는 메시지에 따라 MFA 토큰 디바이스를 동기화할 수 있습니다. AWS 계정에 속한 사용자 대신 디바이스를 동기화할 수 있는 방법에 대한 자세한 내용은 [가상 및 하드웨어 MFA 디바이스 재동기화](id_credentials_mfa_sync.md) 섹션을 참조하세요.

# AWS 계정에서 IAM 사용자 생성
<a name="id_users_create"></a>

**중요**  
 IAM [모범 사례](best-practices.md)는 장기 보안 인증 정보가 있는 IAM 사용자를 사용하는 대신, 인간 사용자가 자격 증명 공급자와의 페더레이션을 사용하여 임시 보안 인증으로 AWS에 액세스하도록 하는 것입니다. 페더레이션 사용자가 지원하지 않는 [특정 사용 사례](gs-identities-iam-users.md)에는 IAM 사용자만 사용하는 것이 좋습니다.

IAM 사용자를 생성하고 사용자가 작업을 수행하도록 허용하는 프로세스가 다음 단계를 구성합니다.

1. [AWS Management Console, AWS CLI](getting-started-workloads.md), Tools for Windows PowerShell에서 사용자를 생성하거나 AWS API 작업을 사용하여 사용자를 생성합니다. AWS Management Console에서 사용자를 생성하면 선택한 항목에 따라 1\$14단계는 자동으로 처리됩니다. 프로그래밍 방식으로 IAM 사용자를 생성하는 경우, 각 단계를 개별적으로 수행해야 합니다.

1. 사용자에게 필요한 액세스 유형에 따라 사용자의 자격 증명을 생성합니다.
   + **콘솔 액세스 활성화 – *선택 사항***: 사용자가 AWS Management Console에 액세스해야 할 경우, [해당 사용자의 암호를 생성](id_credentials_passwords_admin-change-user.md)합니다. 사용자의 콘솔 액세스를 비활성화하면 사용자가 사용자 이름과 암호를 사용하여 AWS Management Console에 로그인하지 못합니다. 그렇더라도 사용자의 권한이 변경되거나 위임된 역할을 사용하여 콘솔에 액세스하지 못하게 되지는 않습니다.
**작은 정보**  
사용자에게 필요한 보안 인증만 생성하세요. 예를 들어, AWS Management Console을 통해서만 액세스해야 하는 사용자에게는 액세스 키를 생성해서는 안 됩니다.

1. 사용자에게 필수 작업을 수행할 권한을 부여합니다. IAM 사용자를 그룹에 추가한 후 해당 그룹에 연결된 정책을 통해 권한을 관리하는 것이 좋습니다. 그러나 권한 정책을 사용자에게 직접 연결하여 권한을 부여할 수도 있습니다. 콘솔을 사용하여 사용자를 추가하는 경우 기존 사용자의 권한을 새 사용자에게 복사할 수 있습니다.

   사용자가 보유할 수 있는 최대 권한을 정의하는 정책을 지정하여 사용자의 권한을 제한하도록 [권한 경계](access_policies_boundaries.md)를 추가할 수도 있습니다. 권한 경계는 어떤 권한도 부여하지 않습니다.

   권한을 부여하거나 권한 경계를 설정하는 데 사용할 사용자 지정 권한 정책을 생성하는 방법에 대한 지침은 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](access_policies_create.md) 섹션을 참조하세요.

1. (선택 사항) 태그를 연결하여 메타데이터를 사용자에게 추가합니다. IAM에서의 태그 사용에 대한 자세한 내용은 [AWS Identity and Access Management 리소스용 태그](id_tags.md) 섹션을 참조하세요.

1. 사용자에게 필요한 로그인 정보를 제공합니다. 여기에는 암호를 비롯해 사용자가 자격 증명을 제공하는 계정 로그인 웹 페이지의 콘솔 URL이 포함됩니다. 자세한 내용은 [IAM 사용자가 AWS에 로그인하는 방법](id_users_sign-in.md) 단원을 참조하십시오.

1. (선택 사항) 사용자에 대한 [멀티 팩터 인증(MFA)](id_credentials_mfa.md)을 구성합니다. MFA의 경우, 사용자가 AWS Management Console에 로그인할 때마다 일회용 코드를 입력해야 합니다.

1. (선택 사항) IAM 사용자에게 자신의 보안 자격 증명을 관리할 권한을 부여합니다. (기본적으로 IAM 사용자는 자신의 자격 증명을 관리할 권한이 없습니다.) 자세한 내용은 [IAM 사용자에게 자신의 암호 변경 허용](id_credentials_passwords_enable-user-change.md) 단원을 참조하십시오.
**참고**  
콘솔을 사용하여 사용자를 생성하고 **사용자는 다음 로그인 시 새 암호를 생성해야 합니다.**(권장)를 선택하는 경우 사용자에게 필요한 권한이 부여됩니다.

사용자를 생성하기 위해 필요한 권한에 대한 자세한 내용은 [IAM 리소스에 액세스하는 데 필요한 권한](access_permissions-required.md) 섹션을 참조하세요.

특정 사용 사례에 맞게 IAM 사용자를 생성하는 방법에 대한 지침은 다음 주제를 참조하세요.
+ [비상 액세스를 위한 IAM 사용자 생성](getting-started-emergency-iam-user.md)
+ [IAM 역할을 사용할 수 없는 워크로드용 IAM 사용자 생성](getting-started-workloads.md)

# IAM 사용자 보기
<a name="id_users_list"></a>

AWS 계정 또는 특정 IAM 그룹에 속한 IAM 사용자를 나열하고 특정 사용자가 속한 모든 IAM 그룹을 나열할 수 있습니다. 사용자 표시에 필요한 권한에 대한 자세한 내용은 [IAM 리소스에 액세스하는 데 필요한 권한](access_permissions-required.md) 섹션을 참조하세요.

## 계정에 속한 모든 IAM 사용자 나열
<a name="id_users_manage_list-users"></a>

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

콘솔에 AWS 계정에 속한 IAM 사용자가 표시됩니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)`

------
#### [ API ]

다음 작업을 직접 호출:
+ `[ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` 

------

## IAM 그룹의 IAM 사용자 나열
<a name="id_users_manage_list-users-group"></a>

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자 그룹**을 선택합니다.

1. 사용자 그룹의 이름을 선택합니다.

그룹의 구성원인 IAM 사용자는 **사용자** 탭에 나열됩니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ `[aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)`

------
#### [ API ]

다음 작업을 직접 호출:
+ `[GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)` 

------

## 특정 사용자가 속한 모든 IAM 그룹을 나열하려면
<a name="id_users_manage_list-groups-users"></a>

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 IAM 사용자 이름을 선택합니다.

1. **그룹** 탭을 선택하면 현재 사용자를 포함하는 그룹 목록이 표시됩니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)`

------
#### [ API ]

다음 작업을 직접 호출:
+ `[ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)` 

------

## 다음 단계
<a name="id_users_list-next-steps"></a>

IAM 사용자 목록이 생성되면 다음 절차를 사용하여 IAM 사용자의 이름을 바꾸거나, 삭제하거나, 비활성화할 수 있습니다.
+ [IAM 사용자 이름 바꾸기](id_users_rename.md)
+ [IAM 사용자 제거 또는 비활성화](id_users_remove.md)

# IAM 사용자 이름 바꾸기
<a name="id_users_rename"></a>

**참고**  
[가장 좋은 방법](best-practices.md)은 인간 사용자가 ID 제공업체와의 페더레이션을 사용하여 임시 보안 인증으로 AWS에 액세스하도록 하는 것입니다. 이 방법을 따르는 경우 사용자가 IAM 사용자 및 그룹을 관리하지 않습니다. 대신 사용자와 그룹은 AWS 외부에서 관리되며 *페더레이션형 ID*로 AWS 리소스에 액세스할 수 있습니다. AWS 페더레이션형 ID는 엔터프라이즈 사용자 디렉터리, 웹 ID 제공업체, Directory Service, Identity Center 디렉터리의 사용자 또는 ID 소스를 통해 제공된 보안 인증을 사용하여 AWS 서비스에 액세스하는 모든 사용자입니다. 페더레이션형 ID는 ID 제공업체에서 정의한 그룹을 사용합니다. AWS IAM Identity Center를 사용하는 경우 IAM Identity Center에서 사용자 및 그룹 생성에 대한 자세한 내용은 *AWS IAM Identity Center User Guide*( 사용 설명서)의 [Manage identities in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html)(IAM Identity Center에서 ID 관리)를 참조하세요.

Amazon Web Services는 AWS 계정에 속한 IAM 사용자를 관리할 수 있는 다양한 도구를 제공합니다. 계정 또는 사용자 그룹에 속한 IAM 사용자를 나열하거나 특정 사용자가 속한 모든 IAM 그룹을 나열할 수 있습니다. IAM 사용자의 이름을 변경하거나 경로를 변경할 수 있습니다. IAM 사용자 대신 페더레이션형 ID를 사용하도록 전환하는 경우 AWS 계정에서 IAM 사용자를 삭제하거나 사용자를 비활성화할 수 있습니다.

IAM 사용자의 관리형 정책을 추가, 변경 또는 제거하는 방법에 대한 자세한 내용은 [IAM 사용자의 권한 변경](id_users_change-permissions.md) 섹션을 참조하세요. IAM 사용자의 인라인 정책을 관리하는 방법에 대한 자세한 내용은 [IAM 자격 증명 권한 추가 및 제거](access_policies_manage-attach-detach.md), [IAM 정책 편집](access_policies_manage-edit.md), [IAM 정책 삭제](access_policies_manage-delete.md) 섹션을 참조하세요. 가장 좋은 방법은 인라인 정책 대신 관리형 정책을 사용하는 것입니다. *AWS 관리형 정책*은 많은 일반 사용 사례에 대한 권한을 부여합니다. AWS 관리형 정책은 모든 AWS 고객이 사용할 수 있기 때문에 특정 사용 사례에 대해 최소 권한을 부여하지 않을 수 있습니다. 따라서 사용 사례에 고유한 [고객 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)을 정의하여 권한을 줄이는 것이 좋습니다. 자세한 내용은 [AWS 관리형 정책](access_policies_managed-vs-inline.md#aws-managed-policies) 단원을 참조하십시오. 특정 작업 기능을 위해 설계된 AWS 관리형 정책에 대한 자세한 내용은 [직무에 관한 AWS 관리형 정책](access_policies_job-functions.md) 섹션을 참조하세요.

IAM 정책 검증에 대한 자세한 내용은 [IAM 정책 검증](access_policies_policy-validator.md) 섹션을 참조하세요.

**작은 정보**  
[IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)는 IAM 역할이 사용하는 서비스와 작업을 분석한 다음 사용할 수 있는 세분화된 정책을 생성할 수 있습니다. 생성된 각 정책을 테스트한 후 프로덕션 환경에 해당 정책을 배포할 수 있습니다. 이렇게 하면 워크로드에 필요한 권한만 부여할 수 있습니다. 정책 생성에 대한 자세한 내용은 [IAM Access Analyzer 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)을 참조하세요.

IAM 사용자 암호 관리에 대한 자세한 내용은 [IAM 사용자 암호 관리](id_credentials_passwords_admin-change-user.md) 섹션을 참조하세요.

## IAM 사용자 이름 바꾸기
<a name="id_users_renaming"></a>

사용자의 이름 또는 경로를 변경하려면 AWS CLI, Tools for Windows PowerShell 또는 AWS API를 사용해야 합니다. 콘솔에서는 사용자의 이름을 변경할 수 있는 옵션이 없습니다. 사용자의 이름을 변경하기 위해 필요한 권한에 대한 자세한 내용은 [IAM 리소스에 액세스하는 데 필요한 권한](access_permissions-required.md) 섹션을 참조하세요.

사용자의 이름 또는 경로를 변경하면 다음과 같이 진행됩니다.
+ 사용자에 연결된 정책은 이름이 변경되어도 계속 유지됩니다.
+ 사용자는 전과 동일한 IAM 그룹에 새 이름으로 표시됩니다.
+ 사용자의 고유 ID는 전과 같습니다. 고유 ID에 대한 자세한 내용은 [고유 식별자](reference_identifiers.md#identifiers-unique-ids) 섹션을 참조하세요.
+ 사용자를 *보안 주체로* 참조(해당 사용자에게 액세스가 부여됨)하는 리소스 또는 역할 정책은 새 이름 또는 경로를 사용하도록 자동 업데이트됩니다. 예를 들어 Amazon SQS의 대기열 기반 정책 또는 Amazon S3의 리소스 기반 정책은 자동 업데이트되어 새 이름과 경로를 사용합니다.

사용자를 *리소스로* 참조하는 정책은 새 이름 또는 경로를 사용하도록 IAM에서 자동 업데이트하지 않으므로 수동으로 업데이트해야 합니다. 예를 들어 사용자 `Richard`에게 자신의 보안 자격 증명을 관리하는 정책이 연결되어 있을 경우 관리자가 `Richard`에서 `Rich`로 이름을 변경하면 다음과 같이 리소스가 변경되도록 관리자가 정책도 업데이트해야 합니다.

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Richard
```

다음으로 업데이트:

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Rich
```

마찬가지로 경로를 변경할 경우에도 관리자가 사용자에 대한 새 경로를 반영하도록 정책을 업데이트해야 합니다.

### 사용자의 이름을 바꾸려면
<a name="id_users_manage_list-users-rename"></a>
+ AWS CLI: [aws iam update-user](https://docs.aws.amazon.com/cli/latest/reference/iam/update-user.html)
+ AWS API: [UpdateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html) 

# IAM 사용자 제거 또는 비활성화
<a name="id_users_remove"></a>

[모범 사례](best-practices.md#remove-credentials)에 따라 AWS 계정에서 미사용 IAM 사용자를 제거하는 것이 좋습니다. 나중에 사용할 수 있도록 IAM 사용자 자격 증명을 유지하려면 계정에서 삭제하는 대신 사용자의 액세스를 비활성화할 수 있습니다. 자세한 내용은 [IAM 사용자 비활성화](#id_users_deactivating) 섹션을 참조하세요.

**주의**  
IAM 사용자와 해당 액세스 키가 삭제되면 복원하거나 복구할 수 없습니다.

## 사전 조건 - IAM 사용자 액세스 보기
<a name="users-manage_prerequisites"></a>

사용자를 제거하기 전에 최근 서비스 수준 활동을 검토합니다. 이렇게 하면 이를 사용하는 보안 주체(개인 또는 애플리케이션)의 액세스 권한 제거를 방지할 수 있습니다. 마지막으로 액세스한 정보 보기에 대한 자세한 내용은 [마지막으로 액세스한 정보를 사용하여 AWS에서 권한 재정의](access_policies_last-accessed.md) 섹션을 참조하세요.

## IAM 사용자 제거(콘솔)
<a name="id_users_deleting_console"></a>

AWS Management Console을 사용하여 IAM 사용자를 제거하면 IAM에서 자동으로 다음 관련 정보를 삭제합니다.
+ IAM 사용자 식별자
+ 모든 그룹 멤버십(IAM 사용자가 속해 있던 모든 IAM 그룹에서 제거됨)
+ IAM 사용자와 연결된 모든 암호 
+ IAM 사용자에게 포함된 모든 인라인 정책(사용자 그룹 권한을 사용하여 IAM 사용자에게 적용되는 정책은 영향을 받지 않음) 
**참고**  
사용자를 삭제할 때 IAM은 IAM 사용자에 연결된 관리형 정책을 제거하지만 관리형 정책을 삭제하지는 않습니다.
+ 연결된 모든 MFA 디바이스

### IAM 사용자 제거(콘솔)
<a name="id_users_remove-section-1"></a>

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 왼쪽 탐색 창에서 **사용자**를 선택한 후 삭제할 IAM 사용자 이름 옆에 있는 확인란을 선택하세요.

1. 페이지 상단에서 **삭제(Delete)**를 선택합니다.
**참고**  
사용자에게 활성 액세스 키가 있는 경우 사용자를 삭제하기 전에 액세스 키를 비활성화해야 합니다. 자세한 내용은 [IAM 사용자의 액세스 키 비활성화](access-keys-admin-managed.md#admin-deactivate-access-key) 섹션을 참조하세요.

1. 확인 대화 상자에서 텍스트 입력 필드에 사용자 이름을 입력하여 사용자 삭제를 확인합니다. **삭제**를 선택합니다.

콘솔에 IAM 사용자가 삭제되었다는 상태 알림이 표시됩니다.

------

## IAM 사용자 삭제(AWS CLI)
<a name="id_users_deleting_cli"></a>

AWS Management Console과 달리 AWS CLI로 IAM 사용자를 삭제할 때는 IAM 사용자에게 연결된 항목들을 수동으로 삭제해야 합니다. 다음 절차는 그 과정을 보여줍니다.

**AWS 계정(AWS CLI)에서 IAM 사용자 삭제**

1. 해당 사용자의 암호가 있으면 삭제합니다.

   `[aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)`

1. 해당 사용자의 액세스 키가 있으면 삭제합니다.

   `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)`(사용자의 액세스 키 나열) 및 `[aws iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)`

1. 사용자 서명 인증서를 삭제합니다. 보안 자격 증명을 삭제하면 영원히 지워져 검색할 수 없습니다.

   `[aws iam list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html)`(사용자의 서명 인증서 나열) 및 `[aws iam delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html)`

1. 해당 사용자의 SSH 퍼블릭 키가 있으면 삭제합니다.

   `[aws iam list-ssh-public-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-ssh-public-keys.html)`(사용자의 SSH 퍼블릭 키 나열) 및 `[aws iam delete-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-ssh-public-key.html)`

1. 사용자의 Git 자격 증명을 삭제합니다.

   `[aws iam list-service-specific-credentials](https://docs.aws.amazon.com/cli/latest/reference/iam/list-service-specific-credentials.html)`(사용자의 Git 자격 증명 나열) 및 `[aws iam delete-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-specific-credential.html)`

1. 해당 사용자의 Multi-Factor Authentication(MFA) 디바이스가 있으면 비활성화합니다.

   `[aws iam list-mfa-devices](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-devices.html)`(사용자의 MFA 디바이스 나열), `[aws iam deactivate-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)`(디바이스 비활성화) 및 `[aws iam delete-virtual-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html)`(가상 MFA 디바이스를 영구 삭제) 

1. 사용자의 인라인 정책을 삭제합니다.

   `[aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)`(사용자에 대한 인라인 정책 나열) 및 [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html)(정책 삭제) 

1. 사용자에 연결된 관리형 정책을 모두 분리합니다.

   `[aws iam list-attached-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html)`(사용자에게 연결된 관리형 정책 나열) 및 [https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html)(정책 분리) 

1. 사용자를 모든 IAM 그룹에서 제거합니다.

   `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)`(사용자가 속한 IAM 그룹 나열) 및 `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)` 

1. 사용자를 삭제합니다.

   `[aws iam delete-user](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user.html)` 

## IAM 사용자 비활성화
<a name="id_users_deactivating"></a>

IAM 사용자가 잠시 회사를 떠나 있는 동안 IAM 사용자를 비활성화해야 할 수 있습니다. IAM 사용자 자격 증명을 그대로 두고 AWS 액세스를 계속 차단할 수 있습니다.

사용자를 비활성화하려면 AWS에 대한 사용자 액세스를 거부하는 정책을 생성하고 연결합니다. 나중에 사용자의 액세스 권한을 복원할 수 있습니다.

다음은 액세스를 거부하기 위해 사용자에게 연결할 수 있는 거부 정책의 두 가지 예입니다.

다음 정책에는 시간 제한이 포함되지 않습니다. 사용자의 액세스 권한을 복원하려면 정책을 제거해야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [ 
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*"
      } 
   ]
}
```

------

다음 정책에는 2024년 12월 24일 오후 11:59(UTC)에 시작하여 2025년 2월 28일 오후 11:59(UTC)에 종료하는 조건이 포함되어 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
          "DateGreaterThan": {"aws:CurrentTime": "2024-12-24T23:59:59Z"},
          "DateLessThan": {"aws:CurrentTime": "2025-02-28T23:59:59Z"}
          }
       }
   ]
}
```

------

# AWS Management Console에 대한 IAM 사용자 액세스 제어
<a name="console_controlling-access"></a>

AWS Management Console을 통해 AWS 계정에 로그인하는 권한이 있는 IAM 사용자는 AWS 리소스에 액세스할 수 있습니다. 다음 목록에서는 AWS Management Console을 통해 AWS 계정 리소스에 대한 액세스 권한을 IAM 사용자에게 부여하는 방법을 보여 줍니다. 또한 IAM 사용자가 AWS 웹 사이트를 통해 다른 AWS 계정 기능에 액세스할 보여 줍니다.

**참고**  
IAM 사용에는 요금이 부과되지 않습니다.

**AWS Management Console은**  
AWS Management Console에 액세스해야 하는 각 IAM 사용자에 대해 암호를 만듭니다. 사용자는 IAM 지원 AWS 계정 로그인 페이지를 통해 콘솔에 액세스합니다. 로그인 페이지 액세스에 대한 자세한 내용은 *AWS Sign-In 사용 설명서*의 [AWS 로그인 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)을 참조하세요. 암호 만들기에 대한 자세한 내용은 [AWS의 사용자 암호](id_credentials_passwords.md)을 참조하세요.  
사용자의 암호를 제거하여 IAM 사용자가 AWS Management Console에 액세스하지 못하도록 할 수 있습니다. 그러면 사용자는 자신의 로그인 보안 인증을 사용해 AWS Management Console에 로그인할 수 없습니다. 그렇더라도 사용자의 권한이 변경되거나 위임된 역할을 사용하여 콘솔에 액세스하지 못하게 되지는 않습니다. 사용자에게 활성 액세스 키가 있다면 해당 키는 계속 작동하고 AWS CLI, Tools for Windows PowerShell 또는 AWS API 또는 AWS Console Mobile Application을 통해 액세스를 허용합니다.

**Amazon EC2 인스턴스, Amazon S3 버킷 등의 AWS 리소스**  
IAM 사용자에게 암호가 있더라도 AWS 리소스에 액세스하려면 권한이 필요합니다. IAM 사용자를 만들 때 이 사용자에게는 기본적으로 권한이 없습니다. IAM 사용자에게 필요한 권한을 부여하려면 해당 사용자에게 정책을 연결합니다. 같은 리소스로 같은 작업을 수행할 IAM 사용자가 많은 경우 해당 IAM 사용자를 그룹에 할당할 수 있습니다. 이 그룹에 권한을 할당할 수 있습니다. IAM 사용자 및 그룹 만들기에 대한 자세한 내용은 [IAM 자격 증명](id.md)을 참조하세요. 권한 설정을 위한 정책 사용에 대한 자세한 내용은 [AWS리소스에 대한 액세스 관리](access.md)을 참조하세요.

**AWS 토론 포럼**  
누구나 [AWS 토론 포럼](https://forums.aws.amazon.com/)에서 게시물을 읽을 수 있습니다. AWS 토론 포럼에 질문이나 의견을 게시하고자 하는 사용자는 자신의 사용자 이름을 사용하여 그렇게 할 수 있습니다. 사용자가 처음으로 AWS 토론 포럼에 게시하면 별칭과 이메일 주소를 입력하라는 메시지가 표시됩니다. 해당 사용자만 AWS 토론 포럼에서 해당 별칭을 사용할 수 있습니다.

**AWS 계정 결제 및 사용 정보**  
AWS 계정 결제 및 사용 정보에 대한 액세스 권한을 사용자에게 부여할 수 있습니다. 자세한 내용은 *AWS Billing 사용 설명서*의 [결제 정보에 대한 액세스 제어](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html)를 참조하세요.

**AWS 계정 프로필 정보**  
사용자는 계정 소유자의 AWS 계정 프로필 정보에 액세스할 수 없습니다.

**AWS 계정 보안 인증 정보**  
사용자는 계정 소유자의 AWS 계정 보안 인증 정보에 액세스할 수 없습니다.

**참고**  
IAM 정책은 인터페이스와 관계없이 액세스를 제어합니다. 예를 들어 AWS Management Console에 액세스하기 위한 암호를 사용자에게 제공할 수 있습니다. 해당 사용자(또는 사용자가 속한 그룹)에 대한 정책은 사용자가 AWS Management Console에서 수행할 수 있는 작업을 제어합니다. 또는 AWS에 대해 API 호출을 실행하기 위한 AWS 액세스 키를 사용자에게 제공할 수 있습니다. 이렇게 하면 인증을 위해 해당 액세스 키를 사용하는 라이브러리 또는 클라이언트를 통해 사용자가 호출할 수 있는 작업이 정책을 통해 제어됩니다.

# IAM 사용자의 권한 변경
<a name="id_users_change-permissions"></a>

AWS 계정에서 IAM 사용자의 권한을 변경하려면 사용자의 그룹 멤버십을 변경하거나, 기존 사용자의 권한을 복사하거나, 사용자에 정책을 직접 연결하거나, [권한 경계](access_policies_boundaries.md)를 설정할 수 있습니다. 이 권한 경계는 사용자가 가질 수 있는 최대 권한을 관리합니다. 권한 경계는 고급 AWS 기능입니다.

사용자의 권한을 수정하기 위해 필요한 권한에 대한 자세한 내용은 [IAM 리소스에 액세스하는 데 필요한 권한](access_permissions-required.md) 섹션을 참조하세요.

**Topics**
+ [사용자 액세스 보기](#users-modify_prerequisites)
+ [사용자의 액세스 활동을 기반으로 정책 생성](#users_change_permissions-gen-policy)
+ [사용자에 권한 추가(콘솔)](#users_change_permissions-add-console)
+ [사용자의 권한 변경(콘솔)](#users_change_permissions-change-console)
+ [사용자에게서 권한 정책 제거(콘솔)](#users_change_permissions-remove-policy-console)
+ [사용자에게서 권한 경계 제거(콘솔)](#users_change_permissions-remove-boundary-console)
+ [사용자 권한 추가 및 제거(AWS CLI 또는 AWS API)](#users_change_permissions-add-programmatic)

## 사용자 액세스 보기
<a name="users-modify_prerequisites"></a>

사용자에 대한 권한을 변경하기 전에 최근 서비스 수준 활동을 검토해야 합니다. 이 기능은 사용 중인 보안 주체(사람 또는 애플리케이션)의 액세스 권한을 제거하지 않으려는 경우 중요합니다. 마지막으로 액세스한 정보 보기에 대한 자세한 내용은 [마지막으로 액세스한 정보를 사용하여 AWS에서 권한 재정의](access_policies_last-accessed.md) 섹션을 참조하세요.

## 사용자의 액세스 활동을 기반으로 정책 생성
<a name="users_change_permissions-gen-policy"></a>

때로는 IAM 엔터티(사용자 또는 역할)에 필요한 것보다 많은 권한을 부여할 수도 있습니다. 부여하는 권한을 세분화할 수 있도록 엔터티의 액세스 활동을 기반으로 IAM 정책을 생성할 수 있습니다. IAM Access Analyzer는 사용자의 AWS CloudTrail 로그를 검토하고 지정된 날짜 범위에 엔터티에서 사용한 권한을 포함하는 정책 템플릿을 생성합니다. 이 템플릿을 사용하여 세분화된 권한이 포함된 관리형 정책을 생성한 다음 IAM 엔터티에 연결할 수 있습니다. 이렇게 하면 특정 사용 사례에 사용자나 역할이 AWS 리소스와 상호 작용하는 데 필요한 권한만 부여됩니다. 자세한 내용은 [IAM Access Analyzer 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)을 참조하세요.

## 사용자에 권한 추가(콘솔)
<a name="users_change_permissions-add-console"></a>

IAM은 사용자에 권한 정책을 추가하는 세 가지 방법을 제공합니다.
+ **IAM 그룹에 IAM 사용자 추가** - 사용자를 그룹의 구성원으로 만듭니다. 그룹의 정책은 사용자로 연결됩니다.
+ **기존 IAM 사용자의 권한 복사** - 소스 사용자의 모든 그룹 멤버십, 연결된 관리형 정책, 인라인 정책 및 모든 기존 권한 경계를 복사합니다.
+ **정책을 IAM 사용자에 직접 연결** - 관리형 정책을 사용자에 직접 연결합니다. 더 쉬운 권한 관리를 위해 정책을 그룹에 연결한 다음 IAM 사용자를 적절한 그룹의 멤버로 만드세요.

**중요**  
사용자에게 권한 경계가 있다면 권한 경계가 허용한 권한보다 더 많은 권한을 추가할 수 없습니다.

### IAM 사용자를 그룹에 추가하여 권한 추가
<a name="users_change_permissions-add-group-console"></a>

IAM 그룹에 IAM 사용자를 추가하면 사용자 권한이 그룹에 정의된 권한으로 즉시 업데이트됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 IAM 사용자 이름을 선택합니다.

1. **그룹** 탭을 선택하면 현재 사용자를 포함하는 그룹 목록이 표시됩니다.

1. **그룹에 사용자 추가**를 선택합니다.

1. 사용자를 조인하려는 각 그룹의 확인란을 선택하세요. 그 목록에는 각 그룹의 이름과 사용자가 그 그룹의 구성원이 되면 받는 정책이 표시됩니다.

1. (선택 사항) **그룹 생성**을 선택하여 새 그룹을 정의할 수 있습니다. 이는 기존 그룹과 다른 정책이 연결된 그룹에 사용자를 추가하려는 경우 유용합니다.

   1. 새로운 탭에서 **사용자 그룹 이름**으로 새로운 그룹의 이름을 입력합니다.
**참고**  
AWS 계정의 IAM 리소스 수와 크기는 제한되어 있습니다. 자세한 내용은 [IAM 및 AWS STS 할당량](reference_iam-quotas.md) 섹션을 참조하세요. 그룹 이름에는 최대 128개의 알파벳, 숫자 및 더하기(\$1), 등호(=), 쉼표(,), 마침표(.), 앳(@), 그리고 하이픈(-) 조합을 사용할 수 있습니다. 이름은 계정 내에서 고유해야 합니다. 대소문자는 구별하지 않습니다. 예를 들어 *"TESTGROUP"*과 *"testgroup"*이라는 두 그룹을 만들 수는 없습니다.

   1. 그룹에 연결하려는 관리형 정책에 대해 하나 이상의 확인란을 선택하세요. **정책 생성**을 선택하여 새로운 관리형 정책을 만들 수도 있습니다. 이렇게 하는 경우, 새 정책이 완료되면 이 브라우저 탭 또는 창으로 돌아가 **새로 고침**을 선택한 다음, 그룹에 연결할 새로운 정책을 선택합니다. 자세한 내용은 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](access_policies_create.md) 섹션을 참조하세요.

   1. **사용자 그룹 만들기**를 선택합니다.

   1. 기존 탭으로 반환하고 그룹 목록을 새로 고침합니다. 그런 다음, 새로운 그룹에 대한 확인란을 선택하세요.

1. **그룹에 사용자 추가**를 선택합니다.

콘솔에 사용자가 지정한 그룹에 추가되었음을 알리는 상태 메시지가 표시됩니다.

------

### 다른 IAM 사용자에게서 복사하여 권한 추가
<a name="users_change_permissions-add-copy-console"></a>

권한을 복사하여 IAM 사용자에게 권한을 추가하는 경우 IAM은 지정된 사용자의 모든 그룹 멤버십, 연결된 관리형 정책, 인라인 정책 및 기존 권한 경계를 복사하여 현재 선택한 사용자에게 즉시 적용합니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 IAM 사용자 이름을 선택합니다.

1. **권한** 탭에서 **권한 추가**를 선택합니다.

1. **권한 추가** 페이지에서 **권한 복사**를 선택합니다. 목록에는 사용 가능한 IAM 사용자들이 그들의 그룹 멤버십 및 연결된 정책과 함께 표시됩니다.

1. 복사하고자 하는 권한을 보유한 사용자 옆에 있는 라디오 버튼을 선택합니다.

1. **다음**을 선택하여 사용자에 대한 변경 사항의 목록을 확인합니다. 그런 다음 **Add permissions(권한 추가)**를 선택합니다.

콘솔에 지정한 IAM 사용자로부터 권한이 복사되었음을 알리는 상태 메시지가 표시됩니다.

------

### IAM 사용자에게 정책을 직접 연결하여 권한 추가
<a name="users_change_permissions-add-directly-console"></a>

관리형 정책을 IAM 사용자에게 직접 연결할 수 있습니다. 업데이트된 권한은 즉시 적용됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 IAM 사용자 이름을 선택합니다.

1. **권한** 탭에서 **권한 추가**를 선택합니다.

1. **권한 추가** 페이지에서 **정책을 직접 연결**을 선택합니다. **권한 정책** 목록에는 사용 가능한 정책 유형 및 연결된 엔터티와 함께 사용 가능한 정책이 표시됩니다.

1. 연결하려는 **정책 이름** 옆에 있는 라디오 버튼을 선택합니다.

1. **다음**을 선택하여 사용자에 대한 변경 사항의 목록을 확인합니다. 그런 다음 **Add permissions(권한 추가)**를 선택합니다.

콘솔에 지정한 IAM 사용자에게 정책이 추가되었음을 알리는 상태 메시지가 표시됩니다.

------

### IAM 사용자에 대한 권한 경계 설정
<a name="users_change_permissions-set-boundary-console"></a>

권한 경계는 IAM 사용자가 가질 수 있는 최대 권한을 설정하는 데 사용되는 AWS의 권한을 관리하기 위한 고급 기능입니다. 권한 경계를 설정하면 부여된 다른 권한과 무관하게 IAM 사용자 권한이 경계로 즉시 제한됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 권한 경계를 변경하려는 IAM 사용자의 이름을 선택합니다.

1. **권한** 탭을 선택합니다. 필요하다면 **권한 경계** 섹션을 열고 **권한 경계 설정**을 선택합니다.

1. **권한 경계 설정** 페이지의 **권한 정책**에서 권한 경계에 사용할 정책을 선택합니다.

1. **Set boundary(경계 설정)**을 선택합니다.

콘솔에 권한 경계가 추가되었음을 알리는 상태 메시지가 표시됩니다.

------

## 사용자의 권한 변경(콘솔)
<a name="users_change_permissions-change-console"></a>

IAM을 사용하면 다음과 같은 방법으로 사용자와 연결된 권한을 변경할 수 있습니다.
+ **권한 정책 편집** - 사용자 인라인 정책, 사용자 그룹의 인라인 정책을 편집하거나 사용자에 직접 연결되거나 그룹에서 연결된 관리형 정책을 편집합니다. 사용자에게 권한 경계가 있다면 권한 경계로 사용된 정책이 허용한 권한보다 더 많은 권한을 제공할 수 없습니다.
+ **권한 경계 변경** - 사용자의 권한 경계로 사용되는 정책을 변경합니다. 이로써 사용자가 가질 수 있는 최대 권한을 확장 또는 제한할 수 있습니다.

### 사용자에 연결된 권한 정책 편집
<a name="users_change_permissions-edit-policy-console"></a>

권한 변경으로 사용자 액세스는 바로 업데이트됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 권한 경계를 변경하려는 IAM 사용자의 이름을 선택합니다.

1. **권한** 탭을 선택합니다. 필요하다면 **권한 경계** 섹션을 엽니다.

1. 정책에 대한 세부 정보를 보기 위해서 편집하고자 하는 정책 이름을 선택합니다. 정책을 편집하면 영향을 받을 수 있는 다른 엔터티(IAM 사용자, 그룹 및 역할)를 보려면 **연결된 엔터티** 탭을 선택합니다.

1. 그런 다음 **Permissions tab(권한 탭)**을 정책이 허용한 권한을 검토합니다. 권한을 변경하려면 **편집**을 선택합니다.

1. 정책을 편집하고 모든 [정책 검사](access_policies_policy-validator.md) 권장 사항을 해결합니다. 자세한 내용은 [IAM 정책 편집](access_policies_manage-edit.md) 섹션을 참조하세요.

1. **다음**을 선택한 다음 정책 요약을 검토한 후 **변경 사항 저장**을 선택합니다.

콘솔에 정책이 업데이트되었음을 알리는 상태 메시지가 표시됩니다.

------

### 사용자에 대한 권한 경계 변경
<a name="users_change_permissions-change-boundary-console"></a>

권한 경계 변경으로 사용자 액세스는 바로 업데이트됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 권한 경계를 변경하려는 IAM 사용자의 이름을 선택합니다.

1. **권한** 탭을 선택합니다. 필요하다면 **Permissions boundary(권한 경계)** 섹션을 열고 **Change boundary(경계 변경)**을 선택합니다.

1. 정책을 선택하여 원하는 권한 경계를 사용하세요.

1. **Set boundary(경계 설정)**을 선택합니다.

콘솔에 권한 경계가 변경되었음을 알리는 상태 메시지가 표시됩니다.

------

## 사용자에게서 권한 정책 제거(콘솔)
<a name="users_change_permissions-remove-policy-console"></a>

권한 정책 제거로 사용자 액세스는 바로 업데이트됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 권한 정책을 제거하려는 사용자의 이름을 선택합니다.

1. **권한** 탭을 선택합니다.

1. 기존 정책을 제거하여 권한을 제거하려면 **제거**를 선택하여 정책을 제거하기 전에 **연결 수단** 열을 보고 사용자가 해당 정책을 가져오는 방법을 파악합니다.
   + 그 정책이 그룹 멤버십 때문에 적용되는 경우, **제거**를 선택하면 사용자가 그룹에서 제거됩니다. 한 그룹에 여러 정책이 연결될 수 있습니다. 따라서 그룹에서 사용자를 제거할 경우 사용자는 그 그룹의 멤버십을 통해 받은 *모든* 정책에 대한 액세스 권한을 잃게 됩니다.
   + 정책이 사용자에 직접 연결된 관리형 정책인 경우 **제거**를 선택하면 정책이 사용자와 분리됩니다. 이렇게 해도 정책 자체 또는 그 정책이 연결되어 있을 수 있는 다른 개체에는 영향을 미치지 않습니다.
   + 정책이 인라인 포함 정책인 경우, **제거**를 선택하면 정책이 IAM에서 제거됩니다. 사용자에 직접 연결된 인라인 정책은 해당 사용자에만 존재합니다.

그룹 멤버십을 통해 정책이 사용자에게 부여된 경우 콘솔에 IAM 사용자가 IAM 그룹에서 제거되었음을 알리는 상태 메시지가 표시됩니다. 정책이 직접 연결되거나 인라인인 경우 정책이 제거되었음을 알리는 상태 메시지가 표시됩니다.

------

## 사용자에게서 권한 경계 제거(콘솔)
<a name="users_change_permissions-remove-boundary-console"></a>

권한 경계 제거로 사용자 액세스는 바로 업데이트됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 권한 경계를 제거하려는 IAM 사용자의 이름을 선택합니다.

1. **권한** 탭을 선택합니다. 필요하다면 **권한 경계** 섹션을 엽니다.

1.  **Change boundary(경계 변경)**을 선택합니다. 권한 경계 제거를 확인하려면 확인 대화 상자에서 **경계 제거**를 선택합니다.

콘솔에 권한 경계가 제거되었음을 알리는 상태 메시지가 표시됩니다.

------

## 사용자 권한 추가 및 제거(AWS CLI 또는 AWS API)
<a name="users_change_permissions-add-programmatic"></a>

프로그래밍 방식으로 권한을 추가 또는 제거하려면 그룹 멤버십을 추가 또는 제거하거나 관리형 정책을 연결 또는 분리하거나 인라인 정책을 추가 또는 삭제해야 합니다. 자세한 정보는 다음 주제를 참조하세요.
+ [IAM 그룹의 사용자 편집](id_groups_manage_add-remove-users.md)
+ [IAM 자격 증명 권한 추가 및 제거](access_policies_manage-attach-detach.md)

# AWS의 사용자 암호
<a name="id_credentials_passwords"></a>

계정 IAM 사용자에 대한 암호를 관리할 수 있습니다. IAM 사용자는 AWS Management Console에 액세스하기 위해 암호가 필요합니다. 사용자가 AWS CLI, Tools for Windows PowerShell, AWS SDK 또는 API를 사용하여 프로그래밍 방식으로 AWS 리소스에 액세스하는 경우 암호가 필요 없습니다. 이러한 환경의 경우 IAM 사용자에게 [액세스 키](id_credentials_access-keys.md)를 할당하는 옵션이 있습니다. 그러나 액세스 키에 대한 다른 더 안전한 대안이 있습니다. 먼저 이를 고려해 보는 것이 좋습니다. 자세한 내용은 [AWS 보안 인증 정보](security-creds.md) 단원을 참조하십시오.

**참고**  
IAM 사용자 중 한 명이 암호를 분실하거나 잊어버린 경우 IAM에서 검색할 수 *없습니다*. 설정에 따라 사용자나 관리자가 새 암호를 생성해야 합니다.

**Topics**
+ [IAM 사용자의 계정 암호 정책 설정](id_credentials_passwords_account-policy.md)
+ [IAM 사용자 암호 관리](id_credentials_passwords_admin-change-user.md)
+ [IAM 사용자에게 자신의 암호 변경 허용](id_credentials_passwords_enable-user-change.md)
+ [IAM 사용자가 자신의 암호를 변경하는 방법](id_credentials_passwords_user-change-own.md)

# IAM 사용자의 계정 암호 정책 설정
<a name="id_credentials_passwords_account-policy"></a>

AWS 계정에서 사용자 지정 암호 정책을 설정하여 IAM 사용자 암호의 복잡성 요건과 의무적인 교체 주기를 지정할 수 있습니다. 사용자 지정 암호 정책을 설정하지 않은 경우 IAM 사용자 암호는 기본 AWS 암호 정책을 충족해야 합니다. 자세한 내용은 [사용자 지정 암호 정책 옵션](#password-policy-details) 섹션을 참조하세요.

**Topics**
+ [암호 정책 설정에 대한 규칙](#password-policy-rules)
+ [암호 정책을 설정하는 데 필요한 권한](#default-policy-permissions-required)
+ [기본 암호 정책](#default-policy-details)
+ [사용자 지정 암호 정책 옵션](#password-policy-details)
+ [암호 정책 설정(콘솔)](#IAMPasswordPolicy)
+ [암호 정책 변경(콘솔)](#id_credentials_passwords_account-policy-section-1)
+ [사용자 지정 암호 정책을 삭제하려면 다음을 수행하세요(콘솔).](#id_credentials_passwords_account-policy-section-2)
+ [암호 정책 설정(AWS CLI)](#PasswordPolicy_CLI)
+ [암호 정책 설정(AWS API)](#PasswordPolicy_API)

## 암호 정책 설정에 대한 규칙
<a name="password-policy-rules"></a>

IAM 암호 정책은 AWS 계정 루트 사용자 암호 또는 IAM 사용자 액세스 키에 적용되지 않습니다. 암호가 만료되면 IAM 사용자는 AWS Management Console에 로그인할 수 없지만 액세스 키를 계속 사용할 수 있습니다.

암호 정책을 생성 또는 변경하더라도 대부분의 암호 정책 설정은 사용자가 다음에 자신의 암호를 변경할 때 적용됩니다. 하지만 일부 설정은 바로 적용됩니다. 예: 
+ 최소 길이 및 문자 유형 요건이 변경되는 경우 이러한 설정은 다음 번에 사용자가 자신의 암호를 변경할 때 적용됩니다. 기존 암호가 업데이트된 암호 정책을 따르지 않는 경우에도 사용자들은 기존 암호를 변경할 필요는 없습니다.
+ 암호 만료 기간을 설정하면 만료 기간이 바로 적용됩니다. 예를 들어 암호 만료 기간을 90일로 설정한 경우, 기존 암호가 90일 이상된 모든 IAM 사용자의 암호가 만료됩니다. 이러한 사용자는 다음에 로그인할 때 암호를 변경해야 합니다.

지정된 횟수의 로그인 시도가 실패한 후에는 계정에서 사용자를 잠그는 "잠금 정책'을 생성할 수 없습니다. 보안을 강화하려면 멀티 팩터 인증(MFA)과 함께 강력한 암호 정책을 사용하는 것이 좋습니다. MFA에 대한 자세한 내용은 [IAM의 AWS 다중 인증](id_credentials_mfa.md) 섹션을 참조하세요.

## 암호 정책을 설정하는 데 필요한 권한
<a name="default-policy-permissions-required"></a>

IAM 엔터티(사용자 또는 역할)가 계정 암호 정책을 보거나 편집하도록 허용하려면 권한을 구성해야 합니다. IAM 정책에 다음과 같은 암호 정책 작업을 포함할 수 있습니다.
+ `iam:GetAccountPasswordPolicy` - 엔터티가 계정의 암호 정책을 볼 수 있도록 허용합니다.
+ `iam:DeleteAccountPasswordPolicy` - 엔터티가 계정의 사용자 지정 암호 정책을 삭제하고 기본 암호 정책으로 되돌릴 수 있도록 허용합니다.
+ `iam:UpdateAccountPasswordPolicy` - 엔터티가 계정의 사용자 지정 암호 정책을 생성하거나 변경할 수 있도록 허용합니다.

다음 정책은 계정 암호 정책을 보고 편집할 수 있는 모든 액세스 권한을 허용합니다. 이 예제 JSON 정책 문서를 사용하여 IAM 정책을 생성하는 방법에 대해 자세히 알아보려면 [JSON 편집기를 사용하여 정책 생성](access_policies_create-console.md#access_policies_create-json-editor) 섹션을 참조하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FullAccessPasswordPolicy",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:DeleteAccountPasswordPolicy",
                "iam:UpdateAccountPasswordPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

IAM 사용자가 자신의 암호를 변경하는 데 필요한 권한에 대한 자세한 내용은 [IAM 사용자에게 자신의 암호 변경 허용](id_credentials_passwords_enable-user-change.md) 섹션을 참조하세요.

## 기본 암호 정책
<a name="default-policy-details"></a>

관리자가 사용자 지정 암호 정책을 설정하지 않은 경우 IAM 사용자 암호는 기본 AWS 암호 정책을 충족해야 합니다.

기본 암호 정책은 다음 조건을 적용합니다.
+ 최소 8자부터 최대 128자의 암호 길이
+ 대문자, 소문자, 숫자 및 영숫자가 아닌 문자(`! @ # $ % ^ & * ( ) _ + - = [ ] { } | '`) 중에서 세 가지 이상의 문자 유형 혼합
+ AWS 계정 이름 또는 이메일 주소와 동일하지 않아야 함
+ 암호 만료 안 함

## 사용자 지정 암호 정책 옵션
<a name="password-policy-details"></a>

계정에 대한 사용자 지정 암호 정책을 구성할 때 다음 조건을 지정할 수 있습니다.
+ **암호 최소 길이** - 최소 6자, 최대 128자를 지정할 수 있습니다.
+ **암호 강도**-다음 확인란을 선택하여 IAM 사용자 암호의 강도를 정의할 수 있습니다.
  + 라틴 문자에서 하나 이상의 대문자 필요(A\$1Z)
  + 라틴 문자에서 하나 이상의 소문자 필요(a\$1z)
  + 1개 이상의 숫자 필수
  + 영숫자가 아닌 하나 이상의 문자 필요(`! @ # $ % ^ & * ( ) _ + - = [ ] { } | '`) 
+ **Turn on password expiration**(암호 만료 활성화) - IAM 사용자 암호가 설정된 후 유효한 기간(최소 1일부터 최대 1,095일)을 선택하여 지정할 수 있습니다. 예를 들어 만료일을 90일로 지정하면 모든 사용자에게 즉시 영향을 미칩니다. 암호를 변경한 지 90일 이상인 사용자의 경우, 콘솔에 로그인할 때 새 암호를 설정해야 합니다. 75\$189일이 지난 암호를 사용 중인 사용자는 암호 만료에 대한 AWS Management Console 경고를 수신합니다. 권한이 있는 IAM 사용자는 언제든지 자신의 암호를 변경할 수 있습니다. 새 암호를 설정하면 암호 만료 기간이 다시 시작됩니다. IAM 사용자는 한 번에 유효 암호 하나만 사용할 수 있습니다.
+ **암호 만료 시 관리자 재설정 필요(Password expiration requires administrator reset)** - 암호가 만료된 후 IAM 사용자가 AWS Management Console을 사용하여 자신의 암호를 업데이트하지 못하도록 하려면 이 옵션을 선택합니다. 이 옵션을 선택하기 전에 AWS 계정에 IAM 사용자 암호 재설정을 위한 관리자 권한을 가진 사용자가 2명 이상인지 확인해야 합니다. `iam:UpdateLoginProfile` 권한이 있는 관리자는 IAM 사용자 암호를 재설정할 수 있습니다. `iam:ChangePassword` 권한과 활성 액세스 키가 있는 IAM 사용자는 프로그래밍 방식으로 자신의 IAM 사용자 콘솔 암호를 재설정할 수 있습니다. 이 확인란의 선택을 취소하면 암호가 만료된 IAM 사용자는 AWS Management Console에 액세스하기 전에 새 암호를 설정해야 합니다.
+ **사용자 자신의 암호 변경 허용(Allow users to change their own password)** - 계정의 모든 IAM 사용자가 자신의 암호를 변경하도록 허용할 수 있습니다. 이렇게 하면 사용자에게 해당 사용자의 `iam:ChangePassword` 작업과 `iam:GetAccountPasswordPolicy` 작업에 대한 액세스 권한만 부여됩니다. 이 옵션은 각 사용자에게 권한 정책을 연결하지 않습니다. 대신, IAM은 모든 사용자에 대해 계정 수준에서 권한을 적용합니다. 또는 일부 사용자만 자신의 암호를 관리하도록 허용할 수 있습니다. 이렇게 하려면 이 확인란을 선택 취소합니다. 암호 관리 제한 정책의 사용에 대한 자세한 내용은 [IAM 사용자에게 자신의 암호 변경 허용](id_credentials_passwords_enable-user-change.md) 섹션을 참조하세요.
+ **암호 재사용 제한** - IAM 사용자가 지정된 수의 이전 암호를 재사용하지 못하도록 제한할 수 있습니다. 최소 1부터 최대 24개의 반복할 수 없는 이전 암호를 지정할 수 있습니다.

## 암호 정책 설정(콘솔)
<a name="IAMPasswordPolicy"></a>

AWS Management Console에서 사용자 지정 암호 정책을 생성, 변경 또는 삭제할 수 있습니다. 암호 정책 변경 사항은 이 정책 변경 후 생성된 새 IAM 사용자와 암호를 변경할 때의 기존 IAM 사용자를 대상으로 적용됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **계정 설정(Account settings)**를 선택합니다.

1. **Password policy**(암호 정책) 섹션에서 **Edit**(편집)를 선택합니다.

1. **Custom**(사용자 지정)을 선택하여 사용자 지정 암호 정책을 사용합니다.

1. 암호 정책에 적용할 옵션을 선택하고 [**변경 사항 저장(Save changes)**]을 선택합니다.

1. **Set custom**(사용자 지정 설정)을 선택하여 사용자 지정 암호 정책의 설정을 확인합니다.

콘솔에 IAM 사용자의 암호 요구 사항이 업데이트되었음을 알리는 상태 메시지가 표시됩니다.

------

## 암호 정책 변경(콘솔)
<a name="id_credentials_passwords_account-policy-section-1"></a>

AWS Management Console에서 사용자 지정 암호 정책을 생성, 변경 또는 삭제할 수 있습니다. 암호 정책 변경 사항은 이 정책 변경 후 생성된 새 IAM 사용자와 암호를 변경할 때의 기존 IAM 사용자를 대상으로 적용됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **계정 설정(Account settings)**를 선택합니다.

1. **Password policy**(암호 정책) 섹션에서 **Edit**(편집)를 선택합니다.

1. 암호 정책에 적용할 옵션을 선택하고 [**변경 사항 저장(Save changes)**]을 선택합니다.

1. **Set custom**(사용자 지정 설정)을 선택하여 사용자 지정 암호 정책의 설정을 확인합니다.

콘솔에 IAM 사용자의 암호 요구 사항이 업데이트되었음을 알리는 상태 메시지가 표시됩니다.

------

## 사용자 지정 암호 정책을 삭제하려면 다음을 수행하세요(콘솔).
<a name="id_credentials_passwords_account-policy-section-2"></a>

AWS Management Console에서 사용자 지정 암호 정책을 생성, 변경 또는 삭제할 수 있습니다. 암호 정책 변경 사항은 이 정책 변경 후 생성된 새 IAM 사용자와 암호를 변경할 때의 기존 IAM 사용자를 대상으로 적용됩니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **계정 설정(Account settings)**를 선택합니다.

1. **Password policy**(암호 정책) 섹션에서 **Edit**(편집)를 선택합니다.

1. **IAM default**(IAM 기본값)를 선택하여 사용자 지정 암호 정책을 삭제하고 **Save changes**(변경 사항 저장)를 선택합니다.

1. **Set default**(기본값 설정)를 선택하여 IAM 기본 암호 정책의 설정을 확인합니다.

콘솔에 암호 정책이 IAM 기본값으로 설정되었음을 알리는 상태 메시지가 표시됩니다.

------

## 암호 정책 설정(AWS CLI)
<a name="PasswordPolicy_CLI"></a>

AWS Command Line Interface를 사용하여 암호 정책을 설정할 수 있습니다.

**AWS CLI에서 사용자 지정 계정 암호 정책을 관리하려면**  
다음 명령을 실행합니다.
+ 사용자 지정 암호 정책을 생성하거나 변경하려면: [https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)
+ 암호 정책을 보려면: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html) 
+ 사용자 지정 암호 정책을 삭제하려면: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html) 

## 암호 정책 설정(AWS API)
<a name="PasswordPolicy_API"></a>

AWS API 작업을 사용하여 암호 정책을 설정할 수 있습니다.

**AWS API에서 사용자 지정 계정 암호 정책을 관리하려면**  
다음 연산을 호출합니다.
+ 사용자 지정 암호 정책을 생성하거나 변경하려면: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)
+ 암호 정책을 보려면: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html) 
+ 사용자 지정 암호 정책을 삭제하려면: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html) 

# IAM 사용자 암호 관리
<a name="id_credentials_passwords_admin-change-user"></a>

AWS Management Console을 사용하여 AWS 리소스를 작업하는 IAM 사용자가 로그인하려면 암호가 필요합니다. AWS 계정에 속한 IAM 사용자의 암호를 생성, 변경 또는 삭제할 수 있습니다.

사용자에게 암호를 할당한 후 사용자는 다음과 같은 계정의 로그인 URL을 사용하여 AWS Management Console에 로그인할 수 있습니다.

```
https://12-digit-AWS-account-ID or alias.signin.aws.amazon.com/console
```

IAM 사용자가 AWS Management Console에 로그인하는 방법에 대한 자세한 내용은 *AWS Sign-In 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)을 참조하세요.

사용자에게 암호가 있더라도 AWS 리소스에 액세스하려면 권한이 필요합니다. 기본적으로 사용자에게는 권한이 없습니다. 사용자에게 필요한 권한을 부여하려면 해당 사용자 또는 사용자가 속한 그룹에 정책을 할당합니다. 사용자 및 그룹 만들기에 대한 자세한 내용은 [IAM 자격 증명](id.md)을 참조하세요. 권한 설정을 위한 정책 사용에 대한 자세한 내용은 [IAM 사용자의 권한 변경](id_users_change-permissions.md)을 참조하세요.

자신의 암호를 변경할 권한을 사용자에게 부여할 수 있습니다. 자세한 내용은 [IAM 사용자에게 자신의 암호 변경 허용](id_credentials_passwords_enable-user-change.md) 섹션을 참조하세요. 사용자가 계정 로그인 페이지에 액세스하는 방법에 대한 자세한 내용은 *AWS Sign-In 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)을 참조하세요.

**Topics**
+ [IAM 사용자 암호 생성, 변경 또는 삭제(콘솔)](#id_credentials_passwords_admin-change-user_console)

## IAM 사용자 암호 생성, 변경 또는 삭제(콘솔)
<a name="id_credentials_passwords_admin-change-user_console"></a>

AWS Management Console을 사용하여 IAM 사용자의 암호를 관리할 수 있습니다.

사용자의 액세스 요구 사항은 시간에 따라 변경될 수 있습니다. CLI 액세스 대상 사용자의 콘솔 액세스 권한을 활성화하거나, 자격 증명이 포함된 이메일을 수신하기 때문에 사용자의 암호를 변경하거나, 조직을 떠나거나 더 이상 AWS 액세스 권한이 필요하지 않아 사용자를 삭제해야 하는 경우가 있습니다.

### IAM 사용자 암호 생성(콘솔)
<a name="id_credentials_passwords_admin-change-user-section-1"></a>

이 절차에 따라 사용자 이름과 연결된 암호를 생성하여 사용자 콘솔에 액세스할 수 있습니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 암호를 생성하려는 사용자의 이름을 선택합니다.

1. **보안 자격 증명** 탭을 선택한 다음 **콘솔 로그인**에서 **콘솔 액세스 활성화**를 선택합니다.

1. **콘솔 액세스 활성화** 대화 상자에서 **암호 재설정**을 선택하고, IAM이 암호를 자동으로 생성할지, 아니면 사용자 지정 암호를 생성할지 여부를 선택합니다.
   + IAM에서 암호를 자동으로 생성하려면 **자동 생성 암호(Autogenerated password)**를 선택합니다.
   + 사용자 지정 암호를 만들려면 **사용자 지정 암호(Custom password)**를 선택하고 암호를 입력합니다.
**참고**  
생성하는 암호는 계정의 [암호 정책](id_credentials_passwords_account-policy.md)을 충족해야 합니다.

1. 사용자가 로그인할 때 새 암호를 만들도록 요구하려면 **다음 로그인 시 암호 변경 필요**를 선택합니다.

1. 사용자가 새 암호를 즉시 사용하도록 요구하려면 **활성 콘솔 세션 취소**를 선택합니다. 이렇게 하면 IAM 사용자에게 인라인 정책이 연결되고, 이 정책은 자격 증명이 정책에 지정된 시간보다 오래된 경우 리소스에 대한 사용자 액세스를 거부합니다.

1. **암호 재설정** 선택

1. **콘솔 암호** 대화 상자에서 사용자의 새 암호를 활성화했음을 알려줍니다. 암호를 확인하고 사용자와 공유하려면 **콘솔 암호** 대화 상자에서 **표시**를 선택합니다. **.csv 파일 다운로드**를 선택하여 사용자의 자격 증명이 포함된 파일을 다운로드합니다.
**중요**  
이 단계를 완료한 후에는 보안상의 이유로 암호에 액세스할 수 없지만, 언제든지 새 암호를 만들 수 있습니다.

콘솔에 콘솔 액세스가 활성화되었음을 알리는 상태 메시지가 표시됩니다.

------

### IAM 사용자의 암호를 변경하려면(콘솔)
<a name="id_credentials_passwords_admin-change-user-section-2"></a>

이 절차에 따라 사용자 이름과 연결된 암호를 업데이트합니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 암호를 변경할 사용자의 이름을 선택합니다.

1. **보안 자격 증명** 탭을 선택한 다음 **콘솔 로그인**에서 **콘솔 액세스 관리**를 선택합니다.

1. **콘솔 액세스 관리** 대화 상자에서 **암호 재설정**을 선택하고, IAM이 암호를 자동으로 생성할지, 아니면 사용자 지정 암호를 생성할지 여부를 선택합니다.
   + IAM에서 암호를 자동으로 생성하려면 **자동 생성 암호(Autogenerated password)**를 선택합니다.
   + 사용자 지정 암호를 만들려면 **사용자 지정 암호(Custom password)**를 선택하고 암호를 입력합니다.
**참고**  
생성하는 암호는 계정의 [암호 정책](id_credentials_passwords_account-policy.md)을 충족해야 합니다.

1. 사용자가 로그인할 때 새 암호를 만들도록 요구하려면 **다음 로그인 시 암호 변경 필요**를 선택합니다.

1. 사용자가 새 암호를 즉시 사용하도록 요구하려면 **활성 콘솔 세션 취소**를 선택합니다. 이렇게 하면 IAM 사용자에게 인라인 정책이 연결되고, 이 정책은 자격 증명이 정책에 지정된 시간보다 오래된 경우 리소스에 대한 사용자 액세스를 거부합니다.

1. **암호 재설정** 선택

1. **콘솔 암호** 대화 상자에서 사용자의 새 암호를 활성화했음을 알려줍니다. 암호를 확인하고 사용자와 공유하려면 **콘솔 암호** 대화 상자에서 **표시**를 선택합니다. **.csv 파일 다운로드**를 선택하여 사용자의 자격 증명이 포함된 파일을 다운로드합니다.
**중요**  
이 단계를 완료한 후에는 보안상의 이유로 암호에 액세스할 수 없지만, 언제든지 새 암호를 만들 수 있습니다.

콘솔에 콘솔 액세스가 업데이트되었음을 알리는 상태 메시지가 표시됩니다.

------

### IAM 사용자 암호를 삭제(비활성화)하려면(콘솔)
<a name="id_credentials_passwords_admin-change-user-section-3"></a>

이 절차에 따라 사용자 이름과 연결된 암호를 삭제하여 사용자의 콘솔 액세스 권한을 제거합니다.

**중요**  
사용자의 암호를 제거하여 IAM 사용자가 AWS Management Console에 액세스하지 못하도록 할 수 있습니다. 그러면 사용자는 자신의 로그인 보안 인증을 사용해 AWS Management Console에 로그인할 수 없습니다. 그렇더라도 사용자의 권한이 변경되거나 위임된 역할을 사용하여 콘솔에 액세스하지 못하게 되지는 않습니다. 사용자에게 활성 액세스 키가 있다면 해당 키는 계속 작동하고 AWS CLI, Tools for Windows PowerShell 또는 AWS API 또는 AWS Console Mobile Application을 통해 액세스를 허용합니다.

------
#### [ Console ]

1. *AWS 로그인 사용 설명서*의 [AWS에 로그인하는 방법](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 항목에 설명된 대로 사용자 유형에 맞는 로그인 절차를 따르세요.

1. **IAM 콘솔 홈** 페이지의 왼쪽 탐색 창에서 쿼리를 **IAM 검색** 텍스트 상자에 입력합니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 암호를 삭제할 사용자의 이름을 선택합니다.

1. **보안 자격 증명** 탭을 선택한 다음 **콘솔 로그인**에서 **콘솔 액세스 관리**를 선택합니다.

1. 사용자가 콘솔 사용을 즉시 중지하도록 요구하려면 **활성 콘솔 세션 취소**를 선택합니다. 이렇게 하면 IAM 사용자에게 인라인 정책이 연결되고, 이 정책은 자격 증명이 정책에 지정된 시간보다 오래된 경우 리소스에 대한 사용자 액세스를 거부합니다.

1. **액세스 비활성화**를 선택합니다.

콘솔에 콘솔 액세스가 비활성화되었음을 알리는 상태 메시지가 표시됩니다.

------

### IAM 사용자 암호 생성, 변경 또는 삭제(AWS CLI)
<a name="Using_ManagingPasswordsCLIAPI"></a>

AWS CLI API를 이용해 IAM 사용자의 암호를 관리할 수 있습니다.

**암호를 생성하려면(AWS CLI)**

1. (선택 사항) 사용자에게 암호가 있는지 확인하려면 [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html) 명령을 실행합니다.

1. 암호를 생성하려면 [aws iam create-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-login-profile.html) 명령을 실행합니다.

**사용자의 암호를 변경하려면(AWS CLI)**

1. (선택 사항) 사용자에게 암호가 있는지 확인하려면 [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html) 명령을 실행합니다.

1. 암호를 변경하려면 [aws iam update-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/update-login-profile.html) 명령을 실행합니다.

**사용자의 암호를 삭제(비활성화)하려면(AWS CLI)**

1. (선택 사항) 사용자에게 암호가 있는지 확인하려면 [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html) 명령을 실행합니다.

1. (선택 사항) 사용자의 암호가 마지막으로 사용된 시간을 확인하려면 [aws iam get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 명령을 실행합니다.

1. 암호를 삭제하려면 [aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html) 명령을 실행합니다.

**중요**  
사용자의 암호를 삭제하면 해당 사용자가 더 이상 AWS Management Console에 로그인할 수 없습니다. 사용자에게 활성 액세스 키가 있다면 해당 키는 계속 작동하고 AWS CLI, Tools for Windows PowerShell 또는 AWS API 함수 호출을 통해 액세스를 허용합니다. AWS CLI, Tools for Windows PowerShell 또는 AWS API를 사용하여 AWS 계정에서 사용자를 삭제하는 경우 먼저 이 작업을 사용하여 암호를 삭제해야 합니다. 자세한 내용은 [IAM 사용자 삭제(AWS CLI)](id_users_remove.md#id_users_deleting_cli) 섹션을 참조하세요.

**지정된 시간 이전에 사용자의 활성 콘솔 세션을 취소하려면(AWS CLI)**

1. 지정된 시간 전에 IAM 사용자의 활성 콘솔 세션을 취소하는 인라인 정책을 내장하려면 다음 인라인 정책을 사용하고 [aws iam put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html) 명령을 실행합니다.

   이 인라인 정책은 모든 권한을 거부하며 `aws:TokenIssueTime` 조건 키를 포함합니다. 인라인 정책의 `Condition` 요소에 지정된 시간이 지나기 전에 사용자의 활성 콘솔 세션을 취소합니다. `aws:TokenIssueTime` 조건 키 값을 사용자의 고유한 값으로 교체합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (선택 사항) IAM 사용자에게 포함된 인라인 정책의 이름을 나열하려면 [aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html) 명령을 실행하세요.

1. (선택 사항) IAM 사용자에 포함된 명명된 인라인 정책을 보려면 [aws iam get-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user-policy.html) 명령을 실행합니다.

### IAM 사용자 암호 생성, 변경 또는 삭제(AWS API)
<a name="Using_ManagingPasswordsAPI"></a>

AWS API를 이용해 IAM 사용자의 암호를 관리할 수 있습니다.

**암호를 생성하려면(AWS API)**

1. (선택 사항) 사용자에게 암호가 있는지 확인하려면 [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html) 연산을 호출합니다.

1. 암호를 생성하려면 [CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html) 연산을 호출합니다.

**사용자의 암호를 변경하려면(AWS API)**

1. (선택 사항) 사용자에게 암호가 있는지 확인하려면 [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html) 연산을 호출합니다.

1. 암호를 변경하려면 [UpdateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateLoginProfile.html) 연산을 호출합니다.

**사용자의 암호를 삭제(비활성화)하려면(AWS API)**

1. (선택 사항) 사용자에게 암호가 있는지 확인하려면 [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html) 명령을 실행합니다.

1. (선택 사항) 사용자의 암호가 마지막으로 사용된 시간을 확인하려면 [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html) 명령을 실행합니다.

1. 암호를 삭제하려면 [DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html) 명령을 실행합니다.

**중요**  
사용자의 암호를 삭제하면 해당 사용자가 더 이상 AWS Management Console에 로그인할 수 없습니다. 사용자에게 활성 액세스 키가 있다면 해당 키는 계속 작동하고 AWS CLI, Tools for Windows PowerShell 또는 AWS API 함수 호출을 통해 액세스를 허용합니다. AWS CLI, Tools for Windows PowerShell 또는 AWS API를 사용하여 AWS 계정에서 사용자를 삭제하는 경우 먼저 이 작업을 사용하여 암호를 삭제해야 합니다. 자세한 내용은 [IAM 사용자 삭제(AWS CLI)](id_users_remove.md#id_users_deleting_cli) 섹션을 참조하세요.

**지정된 시간 이전에 사용자의 활성 콘솔 세션을 취소하려면(AWS API)**

1. 지정된 시간 전에 IAM 사용자의 활성 콘솔 세션을 취소하는 인라인 정책을 내장하려면 다음 인라인 정책을 사용하고 [PutUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html) 명령을 실행하세요.

   이 인라인 정책은 모든 권한을 거부하며 `aws:TokenIssueTime` 조건 키를 포함합니다. 인라인 정책의 `Condition` 요소에 지정된 시간이 지나기 전에 사용자의 활성 콘솔 세션을 취소합니다. `aws:TokenIssueTime` 조건 키 값을 사용자의 고유한 값으로 교체합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (선택 사항) IAM 사용자에 포함된 인라인 정책의 이름을 나열하려면 [ListUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html) 명령을 실행합니다.

1. (선택 사항) IAM 사용자에 포함된 명명된 인라인 정책을 보려면 [GetUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUserPolicy.html) 명령을 실행합니다.

# IAM 사용자에게 자신의 암호 변경 허용
<a name="id_credentials_passwords_enable-user-change"></a>

**참고**  
페더레이션형 ID를 가진 사용자는 ID 제공업체가 정의한 프로세스를 사용하여 암호를 변경합니다. [가장 좋은 방법](best-practices.md)은 인간 사용자가 ID 제공업체와의 페더레이션을 사용하여 임시 보안 인증으로 AWS에 액세스하도록 하는 것입니다.

IAM 사용자에게 AWS Management Console에 로그인할 때 사용하는 자신의 암호를 변경할 권한을 부여할 수 있습니다. 이 작업을 두 가지 방법으로 수행할 수 있습니다.
+ [계정의 모든 IAM 사용자에게 자신의 암호 변경을 허용합니다](#proc_letalluserschangepassword).
+ [선택된 IAM 사용자에게만 자신의 암호 변경을 허용합니다](#proc_letselectuserschangepassword). 이 시나리오에서는 모든 사용자의 암호 변경 옵션을 비활성화한 후 IAM 정책을 사용하여 일부 사용자에게만 자신의 암호를 변경할 수 있는 권한을 부여합니다. 이 방법을 사용하면 사용자가 자신의 암호를 변경할 수 있으며 필요에 따라 액세스 키와 같은 다른 자격 증명을 변경할 수 있습니다.

**중요**  
IAM 사용자에게 강력한 암호를 생성할 것을 요구하는 [사용자 지정 암호 정책을 설정](id_credentials_passwords_account-policy.md)하는 것이 좋습니다.

## 모든 IAM 사용자에게 자신의 암호 변경을 허용하려면
<a name="proc_letalluserschangepassword"></a>

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 [**계정 설정(Account settings)**]을 클릭합니다.

1. **Password policy**(암호 정책) 섹션에서 **Edit**(편집)를 선택합니다.

1. **Custom**(사용자 지정)을 선택하여 사용자 지정 암호 정책을 사용합니다.

1. **사용자 자신의 암호 변경 허용(Allow users to change their own password)**을 선택한 다음 **변경 사항 저장(Save changes)**을 선택합니다. 이렇게 하면 계정의 모든 사용자에게 해당 사용자의 `iam:ChangePassword` 작업과 `iam:GetAccountPasswordPolicy` 작업에 대한 액세스 권한만 허용됩니다.

1. 사용자에게 암호 변경에 대한 다음 지침을 제공합니다. [IAM 사용자가 자신의 암호를 변경하는 방법](id_credentials_passwords_user-change-own.md).

------
#### [ AWS CLI ]

다음 명령 실행:
+ `[aws iam update-account-password-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)`

------
#### [ API ]

AWS Management Console 로그인 페이지 URL의 별칭을 만들려면 다음 연산을 호출합니다.
+ `[UpdateAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)` 

------

## 선택된 IAM 사용자에게 자신의 암호 변경을 허용하려면
<a name="proc_letselectuserschangepassword"></a>

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 [**계정 설정(Account settings)**]을 클릭합니다.

1. [**암호 정책(Password policy)**] 섹션에서 [**사용자 자신의 암호 변경 허용(Allow users to change their own password)**] 확인란이 선택 취소되어 있는지 확인합니다. 이 확인란을 선택하면 모든 사용자가 직접 암호를 변경할 수 있습니다. (위 절차 참조).

1. 암호 변경을 허용할 사용자가 아직 없다면 사용자를 만듭니다. 자세한 내용은 섹션을 참조하세요[AWS 계정에서 IAM 사용자 생성](id_users_create.md) 

1. (선택 사항) 직접 암호를 변경하게 할 IAM 사용자 그룹을 만든 다음 앞 단계에서 만든 사용자를 그룹에 추가합니다. 자세한 내용은 [IAM 사용자 그룹](id_groups.md)을 참조하세요.

1. 그룹에 다음 정책을 할당합니다. 자세한 내용은 [IAM 정책 관리](access_policies_manage.md) 섹션을 참조하세요.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:GetAccountPasswordPolicy",
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": "iam:ChangePassword",
         "Resource": "arn:aws:iam::*:user/${aws:username}"
       }
     ]
   }
   ```

------

   이 정책은 [암호 변경](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html) 작업에 대한 액세스 권한을 부여하여 사용자가 콘솔, AWS CLI, Tools for Windows PowerShell 또는 API로부터 본인의 암호만을 변경할 수 있게 합니다. 또한 사용자가 현재 암호 정책을 볼 수 있도록 [GetAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html) 작업에 대한 액세스 권한도 부여합니다. 이 권한은 사용자가 [**암호 변경(Change password)**] 페이지에서 계정 암호를 보는 데 필요합니다. 사용자가 현재 암호 정책을 읽고 변경된 암호가 정책의 요건을 충족하는지 확인할 수 있도록 허용해야 합니다.

1. 사용자에게 암호 변경에 대한 다음 지침을 제공합니다. [IAM 사용자가 자신의 암호를 변경하는 방법](id_credentials_passwords_user-change-own.md).

------

### 자세한 정보
<a name="HowToPwdIAMUser-moreinfo"></a>

자격 증명 관리에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [IAM 사용자에게 자신의 암호 변경 허용](#id_credentials_passwords_enable-user-change) 
+ [AWS의 사용자 암호](id_credentials_passwords.md)
+ [IAM 사용자의 계정 암호 정책 설정](id_credentials_passwords_account-policy.md)
+ [IAM 정책 관리](access_policies_manage.md)
+ [IAM 사용자가 자신의 암호를 변경하는 방법](id_credentials_passwords_user-change-own.md)

# IAM 사용자가 자신의 암호를 변경하는 방법
<a name="id_credentials_passwords_user-change-own"></a>

자신의 IAM 사용자 암호를 변경할 수 있는 권한이 부여된 경우 AWS Management Console의 특별 페이지를 사용하여 이 작업을 수행할 수 있습니다. AWS CLI 또는 AWS API도 사용할 수 있습니다.

**Topics**
+ [필요한 권한](#change-own-passwords-permissions-required)
+ [IAM 사용자가 자신의 암호를 변경하는 방법(콘솔)](#ManagingUserPwdSelf-Console)
+ [IAM 사용자가 자신의 암호를 변경하는 방법(AWS CLI 또는 AWS API)](#ManagingUserPwdSelf-CLIAPI)

## 필요한 권한
<a name="change-own-passwords-permissions-required"></a>

자신의 IAM 사용자에 대한 암호를 변경하려면 [AWS: IAM 사용자가 보안 인증 페이지에서 자신의 콘솔 암호를 변경할 수 있도록 허용](reference_policies_examples_aws_my-sec-creds-self-manage-password-only.md) 정책에 따른 권한이 있어야 합니다.

## IAM 사용자가 자신의 암호를 변경하는 방법(콘솔)
<a name="ManagingUserPwdSelf-Console"></a>

다음 절차는 IAM 사용자가 AWS Management Console을 사용하여 자신의 암호를 변경하는 방법을 설명합니다.

**자신의 IAM 사용자 암호를 변경하려면(콘솔)**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. **AWS IAM 자격 증명** 탭에서 **암호 업데이트**를 선택합니다.

1. **Current password(현재 암호)**에 현재 암호를 입력합니다. **New password(새 암호)** 및 **Confirm new password(새 암호 확인)**에 새 암호를 입력합니다. 그런 다음 **암호 업데이트**를 선택합니다.
**참고**  
새 암호는 계정 암호 정책의 요건을 따라야 합니다. 자세한 내용은 [IAM 사용자의 계정 암호 정책 설정](id_credentials_passwords_account-policy.md) 섹션을 참조하세요.

## IAM 사용자가 자신의 암호를 변경하는 방법(AWS CLI 또는 AWS API)
<a name="ManagingUserPwdSelf-CLIAPI"></a>

다음 절차는 IAM 사용자가 AWS CLI 또는 AWS API를 사용하여 자신의 암호를 변경하는 방법을 설명합니다.

**자신의 IAM 암호를 변경하려면 다음을 사용하세요.**
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html](https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html)
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html)

# IAM 사용자의 액세스 키 관리
<a name="id_credentials_access-keys"></a>

**중요**  
[모범 사례](best-practices.md)는 액세스 키와 같은 장기 보안 인증을 생성하는 대신 임시 보안 인증(예: IAM 역할)을 사용하는 것입니다. 액세스 키를 생성하기 전에 [장기 액세스 키의 대안](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys)을 검토합니다.

액세스 키는 IAM 사용자 또는 AWS 계정 루트 사용자에 대한 장기 보안 인증입니다. 액세스 키를 사용하여 AWS CLI 또는 AWS API에 대한 프로그래밍 요청에 서명할 수 있습니다(직접 또는 AWS SDK를 사용하여). 자세한 내용은 [AWS 보안 자격 증명을 사용한 프로그래밍 방식 액세스](security-creds-programmatic-access.md) 섹션을 참조하세요.

액세스 키는 액세스 키 ID(예: `AKIAIOSFODNN7EXAMPLE`)와 비밀 액세스 키(예: `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`)의 두 가지 부분으로 구성됩니다. 액세스 키 ID와 보안 액세스 키를 함께 사용하여 요청을 인증해야 합니다.



액세스 키 페어를 생성할 때는 액세스 키 ID와 보안 액세스 키를 안전한 위치에 저장합니다. 시크릿 액세스 키는 생성할 때만 가져올 수 있습니다. 보안 액세스 키를 분실한 경우 액세스 키를 삭제하고 새 키를 생성해야 합니다. 자세한 지침은 [액세스 키 업데이트](id-credentials-access-keys-update.md) 섹션을 참조하세요.

사용자당 최대 2개의 액세스 키를 가질 수 있습니다.

**중요**  
액세스 키가 있는 IAM 사용자는 계정 보안 위험이 있습니다. 액세스 키를 안전하게 관리하세요. [계정 식별자를 찾는 데](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) 도움이 되더라도 액세스 키를 권한 없는 당사자에게 제공하지 마세요. 이로 인해 다른 사람에게 계정에 대한 영구 액세스를 제공하게 될 수 있습니다.  
다음은 액세스 키를 사용할 때 알아야 할 사항입니다.  
**금지 사항**. 액세스 키를 생성할 때는 계정의 루트 자격 증명을 사용하면 안 됩니다.
**금지 사항.** 애플리케이션 파일에 액세스 키나 자격 증명 정보를 넣으면 안 됩니다.
**금지 사항.** 프로젝트 영역에 액세스 키나 자격 증명 정보가 포함된 파일을 포함하면 안 됩니다.
공유 AWS 자격 증명 파일에 저장된 액세스 키 또는 자격 증명 정보는 일반 텍스트로 저장됩니다.

## 모니터링 권장 사항
<a name="monitor-access-keys"></a>

액세스 키 생성 후
+ AWS CloudTrail을 사용하여 액세스 키 사용량을 모니터링하고 무단 액세스 시도를 탐지합니다. 자세한 내용은 [AWS CloudTrail을 사용하여 IAM 및 AWS STS API 호출 로깅](cloudtrail-integration.md) 섹션을 참조하세요.
+ 악의적인 활동을 탐지하는 데 도움이 되도록 거부된 액세스 시도에 대해 관리자에게 알리도록 CloudWatch 경보를 설정합니다. 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.
+ 필요에 따라 액세스 키를 정기적으로 검토, 업데이트 및 삭제합니다.

다음 주제에서는 액세스 키와 관련된 관리 작업에 대한 자세한 정보를 제공합니다.

**Topics**
+ [모니터링 권장 사항](#monitor-access-keys)
+ [IAM 사용자에게 인라인 정책을 연결하여 액세스 키 사용 제어](access-keys_inline-policy.md)
+ [액세스 키를 관리하는 데 필요한 권한](access-keys_required-permissions.md)
+ [IAM 사용자가 자체 액세스 키를 관리하는 방법](access-key-self-managed.md)
+ [IAM 관리자가 IAM 사용자 액세스 키를 관리하는 방법](access-keys-admin-managed.md)
+ [액세스 키 업데이트](id-credentials-access-keys-update.md)
+ [액세스 키 보안](securing_access-keys.md)

# IAM 사용자에게 인라인 정책을 연결하여 액세스 키 사용 제어
<a name="access-keys_inline-policy"></a>

[워크로드에서 IAM 역할과 함께 임시 보안 인증을 사용](best-practices.md#bp-workloads-use-roles)하여 AWS에 액세스하도록 하는 것이 좋습니다. 액세스 키가 있는 IAM 사용자에게는 최소 권한 액세스가 할당되어야 하며 [다중 인증(MFA)](id_credentials_mfa.md)이 활성화되어야 합니다. IAM 역할 위임하기에 대한 자세한 내용은 [역할 수임 방법](id_roles_manage-assume.md) 섹션을 참조하세요.

그러나 서비스 자동화 또는 기타 단기 사용 사례에 대한 개념 증명 테스트를 생성하고 액세스 키가 있는 IAM 사용자를 사용하여 워크로드를 실행하기로 선택하는 경우 [정책 조건을 사용하여 IAM 사용자 자격 증명의 액세스를 추가로 제한](best-practices.md#use-policy-conditions)하는 것이 좋습니다.

이 경우 지정된 시간 이후에 자격 증명이 만료되는 시간 제한 정책을 생성하거나, 보안 네트워크에서 워크로드를 실행하는 경우 IP 제한 정책을 사용할 수 있습니다.

이 두 사용 사례 모두 액세스 키가 있는 IAM 사용자에게 연결된 인라인 정책을 사용할 수 있습니다.

**IAM 사용자에 대한 시간 제한 정책을 구성하는 방법**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택한 다음, 단기 사용 사례를 위한 사용자의 이름을 선택합니다. 아직 사용자를 생성하지 않은 경우 지금 [사용자를 생성](getting-started-workloads.md)할 수 있습니다.

1. 사용자 **세부 정보** 페이지에서 **권한** 탭을 선택합니다.

1. **권한 추가**를 선택한 다음 **인라인 정책 생성**을 선택합니다.

1. **정책 편집기** 섹션에서 **JSON**을 선택하여 JSON 편집기를 표시합니다.

1. JSON 편집기에서 `aws:CurrentTime` 타임스탬프 값을 원하는 만료 날짜 및 시간으로 바꾸어 다음 정책을 입력합니다.

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
         "DateGreaterThan": {
         "aws:CurrentTime": "2025-03-01T00:12:00Z"
           }
         }
       }
     ]
   }
   ```

------

   이 정책은 `Deny` 효과를 사용하여 지정된 날짜 이후의 모든 리소스에 대한 모든 작업을 제한합니다. `DateGreaterThan` 조건은 현재 시간을 설정된 타임스탬프와 비교합니다.

1. **다음**을 선택하여 **검토 및 생성** 페이지로 이동합니다. **정책** 세부 정보의 **정책 이름**에 정책의 이름을 입력한 다음 **정책 생성**을 선택합니다.

정책이 생성되면 사용자의 **권한** 탭에 표시됩니다. 현재 시간이 정책에 지정된 시간보다 크거나 같으면 사용자는 더 이상 AWS 리소스에 액세스할 수 없습니다. 워크로드 개발자에게 이러한 액세스 키에 지정된 만료 날짜에 대해 알려야 합니다.

**IAM 사용자에 대한 IP 제한 정책을 구성하는 방법**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택한 다음 보안 네트워크에서 워크로드를 실행할 사용자를 선택합니다. 아직 사용자를 생성하지 않은 경우 지금 [사용자를 생성](getting-started-workloads.md)할 수 있습니다.

1. 사용자 **세부 정보** 페이지에서 **권한** 탭을 선택합니다.

1. **권한 추가**를 선택한 다음 **인라인 정책 생성**을 선택합니다.

1. **정책 편집기** 섹션에서 **JSON**을 선택하여 JSON 편집기를 표시합니다.

1. 다음 IAM 정책을 JSON 편집기에 복사하고 퍼블릭 IPv4 또는 IPv6 주소 또는 범위를 필요에 따라 변경합니다. [https://checkip.amazonaws.com/](https://checkip.amazonaws.com/)을 사용하여 현재 퍼블릭 IP 주소를 확인할 수 있습니다. 슬래시 표기법을 사용하여 개별 IP 주소 또는 IP 주소 범위를 지정할 수 있습니다. 자세한 내용은 [aws:SourceIp](reference_policies_condition-keys.md#condition-keys-sourceip) 섹션을 참조하세요.
**참고**  
IP 주소는 VPN 또는 프록시 서버에서 난독화되지 않아야 합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid":"IpRestrictionIAMPolicyForIAMUser",
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "NotIpAddress": {
             "aws:SourceIp": [
               "203.0.113.0/24",
               "2001:DB8:1234:5678::/64",
               "203.0.114.1"
             ]
           },
           "BoolIfExists": {
             "aws:ViaAWSService": "false"
           }
         }
       }
     ]
   }
   ```

------

   이 정책 예제에서는 요청이 네트워크(CIDR 표기법으로 지정) ‘203.0.113.0/24’, ‘2001:DB8:1234:5678::/64’ 또는 특정 IP 주소 ‘203.0.114.1’에서 시작되지 않는 한 이 정책이 적용된 IAM 사용자의 액세스 키 사용을 거부합니다.

1. **다음**을 선택하여 **검토 및 생성** 페이지로 이동합니다. **정책** 세부 정보의 **정책 이름**에 정책의 이름을 입력한 다음 **정책 생성**을 선택합니다.

정책이 생성되면 사용자의 **권한** 탭에 표시됩니다.

이 정책을 AWS Organizations의 여러 AWS 계정에 서비스 제어 정책(SCP)으로 적용할 수도 있습니다. 이 정책 설명을 이 SCP가 적용되는 AWS 계정 내의 IAM 사용자에게만 적용하려면 `aws:PrincipalArn` 추가 조건을 사용하는 것이 좋습니다. 다음 정책에는 해당 업데이트가 포함됩니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IpRestrictionServiceControlPolicyForIAMUsers",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "203.0.113.0/24",
            "2001:DB8:1234:5678::/64",
            "203.0.114.1"
          ]
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        },
        "ArnLike": {
          "aws:PrincipalArn": "arn:aws:iam::*:user/*"
        }
      }
    }
  ]
}
```

------

# 액세스 키를 관리하는 데 필요한 권한
<a name="access-keys_required-permissions"></a>

**참고**  
`iam:TagUser`은 액세스 키에 설명을 추가하고 편집할 수 있는 선택적 권한입니다. 자세한 내용은 [IAM 사용자 태깅](id_tags_users.md) 섹션을 참조하세요.

자신의 IAM 사용자에 대한 액세스 키를 생성하려면 다음 정책에 따른 권한이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

자신의 IAM 사용자에 대한 액세스 키를 업데이트하려면 다음 정책에 따른 권한이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:GetAccessKeyLastUsed",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# IAM 사용자가 자체 액세스 키를 관리하는 방법
<a name="access-key-self-managed"></a>

IAM 관리자는 [액세스 키를 관리하는 데 필요한 권한](access-keys_required-permissions.md)에 설명된 정책을 연결하여 IAM 사용자에게 액세스 키를 자체 관리할 수 있는 권한을 부여할 수 있습니다.

이러한 권한을 통해 IAM 사용자는 다음 절차를 사용하여 사용자 이름과 연결된 액세스 키를 생성, 활성화, 비활성화 및 삭제할 수 있습니다.

**Topics**
+ [자체 액세스 키 생성(콘솔)](#Using_CreateAccessKey)
+ [액세스 키 비활성화(콘솔)](#deactivate-access-key-seccreds)
+ [액세스 키 활성화(콘솔)](#activate-access-key-seccreds)
+ [액세스 키 삭제(콘솔)](#delete-access-key-seccreds)

## 자체 액세스 키 생성(콘솔)
<a name="Using_CreateAccessKey"></a>

적절한 권한이 부여된 경우 AWS Management Console을 사용하여 자체 액세스 키를 생성할 수 있습니다.

**자체 액세스 키 생성(콘솔)**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. **액세스 키** 섹션에서 **액세스 키 생성**을 선택합니다. 이미 두 개의 액세스 키가 있는 경우, 이 버튼은 비활성화되어 있으며 액세스 키를 삭제해야 새로 생성할 수 있습니다.

1. **Access key best practices & alternatives**(액세스 키 모범 사례 및 대안) 페이지에서 사용 사례를 선택하여 장기 액세스 키 생성 방지에 도움이 되는 추가 옵션에 대해 알아봅니다. 사용 사례에 여전히 액세스 키가 필요하다고 판단되면 **Other**(기타), **Next**(다음)를 차례로 선택합니다.

1. (선택 사항) 액세스 키에 대한 설명 태그 값을 설정합니다. 이렇게 하면 IAM 사용자에게 태그 키-값 페어가 추가됩니다. 이는 나중에 액세스 키를 식별하고 업데이트하는 데 도움이 됩니다. 태그 키는 액세스 키 ID로 설정됩니다. 태그 값은 사용자가 지정하는 액세스 키 설명으로 설정됩니다. 모두 마쳤으면 **Create access key**(액세스 키 생성)를 선택합니다.

1. **Retrieve access keys**(액세스 키 검색) 페이지에서 **Show**(표시)를 선택하여 사용자의 비밀 액세스 키 값을 표시하거나 **Download .csv file**(.csv 파일 다운로드)을 선택합니다. 이것이 비밀 액세스 키를 저장할 수 있는 유일한 기회입니다. 비밀 액세스 키를 안전한 위치에 저장한 후 **Done**(완료)을 선택합니다.

## 액세스 키 비활성화(콘솔)
<a name="deactivate-access-key-seccreds"></a>

적절한 권한이 부여된 경우 AWS Management Console을 사용하여 액세스 키를 비활성화할 수 있습니다.

**액세스 키를 비활성화하려면 다음을 수행하세요.**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. **Access keys**(액세스 키) 섹션에서 비활성화하려는 키를 찾은 다음 **Actions**(작업), **Deactivate**(비활성화)를 차례로 선택합니다. 확인 메시지가 나타나면 **Deactivate**(비활성화)를 클릭합니다. 비활성화된 액세스 키는 여전히 두 개의 액세스 키 제한에 포함됩니다.

## 액세스 키 활성화(콘솔)
<a name="activate-access-key-seccreds"></a>

적절한 권한이 부여된 경우 AWS Management Console을 사용하여 액세스 키를 활성화할 수 있습니다.

**액세스 키를 생성하려면 다음을 수행하세요.**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. **Access keys**(액세스 키) 섹션에서 활성화하려는 키를 찾은 다음 **Actions**(작업), **Activate**(활성화)를 차례로 선택합니다.

## 액세스 키 삭제(콘솔)
<a name="delete-access-key-seccreds"></a>

적절한 권한이 부여된 경우 AWS Management Console을 사용하여 액세스 키를 삭제화할 수 있습니다.

**더 이상 필요하지 않은 액세스 키를 삭제하려면 다음을 수행하세요.**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. **Access keys**(액세스 키) 섹션에서 삭제하려는 키를 찾은 다음 **Actions**(작업), **Delete**(삭제)를 차례로 선택합니다. 대화 상자의 지침에 따라 먼저 **Deactivate**(비활성화)를 수행한 다음 삭제를 확인합니다. 액세스 키를 영구적으로 삭제하기 전에 액세스 키가 더 이상 사용되고 있지 않은지 확인하는 것이 좋습니다.

# IAM 관리자가 IAM 사용자 액세스 키를 관리하는 방법
<a name="access-keys-admin-managed"></a>

IAM 관리자는 개별 IAM 사용자와 연결된 액세스 키를 생성, 활성화, 비활성화 및 삭제할 수 있습니다. 액세스 키가 있는 계정의 IAM 사용자를 나열하고 특정 액세스 키가 있는 IAM 사용자를 찾을 수도 있습니다.

**Topics**
+ [IAM 사용자의 액세스 키 생성](#admin-create-access-key)
+ [IAM 사용자의 액세스 키 비활성화](#admin-deactivate-access-key)
+ [IAM 사용자의 액세스 키 활성화](#admin-activate-access-key)
+ [IAM 사용자의 액세스 키 삭제](#admin-delete-access-key)
+ [IAM 사용자의 액세스 키 나열](#admin-list-access-key)
+ [IAM 사용자의 액세스 키 나열](#admin-list-access-key)
+ [계정의 사용자에 대한 모든 액세스 키 ID 표시](#admin-list-all-access-keys)
+ [액세스 키 ID를 사용하여 사용자 찾기](#admin-find-user-access-keys)
+ [액세스 키 ID의 최근 사용 찾기](#admin-find-most-recent-use-access-keys)

## IAM 사용자의 액세스 키 생성
<a name="admin-create-access-key"></a>

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

1. **보안 자격 증명** 탭의 **액세스 키** 섹션에서 **액세스 키 생성**을 선택합니다.

   버튼이 비활성화된 경우 기존 키 중 하나를 삭제해야 새 키를 생성할 수 있습니다.

1. **Access key best practices & alternatives**(액세스 키 모범 사례 및 대안) 페이지에서 모범 사례와 대안을 검토합니다. 사용 사례를 선택하여 장기 액세스 키 생성 방지에 도움이 되는 추가 옵션에 대해 알아봅니다.

1. 사용 사례에 여전히 액세스 키가 필요하다고 판단되면 **Other**(기타), **Next**(다음)를 차례로 선택합니다.

1. **(선택 사항)** **설명 태그 설정** 페이지에서 액세스 키에 설명 태그를 추가하여 액세스 키를 추적할 수 있습니다. **액세스 키 생성**을 선택하세요.

1. **Retrieve access key page**(액세스 키 검색) 페이지에서 **Show**(표시)를 선택하여 사용자의 비밀 액세스 키 값을 표시합니다.

1. 액세스 키 ID 및 보안 액세스 키를 컴퓨터의 안전한 위치에 `.csv` 파일로 저장하려면 **Download .csv file**(.csv 파일 다운로드) 버튼을 선택합니다.
**중요**  
새로 생성된 액세스 키를 보거나 다운로드할 수 있는 유일한 때이며, 이 경우 복구할 수는 없습니다. 액세스 키를 안전하게 유지 관리해야 합니다.

사용자를 위한 액세스 키를 생성하면 해당 키 페어가 기본적으로 활성화되며 사용자는 이 페어를 즉시 사용할 수 있습니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

------
#### [ API ]

다음 작업을 직접 호출:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) 

------

## IAM 사용자의 액세스 키 비활성화
<a name="admin-deactivate-access-key"></a>

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

1. **보안 자격 증명** 탭의 **액세스 키** 섹션에서 **작업** 드롭다운 메뉴를 선택한 다음 **비활성화**를 선택합니다.

1. **비활성화** 대화 상자에서 **비활성화**를 선택하여 액세스 키 비활성화 여부를 확인합니다.

액세스 키가 비활성화된 후에는 API 직접 호출에서 더 이상 사용할 수 없습니다. 필요한 경우 다시 활성화할 수 있습니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

다음 작업을 직접 호출:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## IAM 사용자의 액세스 키 활성화
<a name="admin-activate-access-key"></a>

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

1. **보안 자격 증명** 탭의 **액세스 키** 섹션에서 **작업** 드롭다운 메뉴를 선택한 다음 **활성화**를 선택합니다.

액세스 키가 활성화되면 API 직접 호출에서 사용할 수 있습니다. 필요한 경우 다시 비활성화할 수 있습니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

다음 작업을 직접 호출:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## IAM 사용자의 액세스 키 삭제
<a name="admin-delete-access-key"></a>

액세스 키가 비활성화된 후 더 이상 필요하지 않으면 삭제하세요.

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

1. **보안 자격 증명** 탭의 **액세스 키** 섹션에서 비활성 액세스 키에 대한 **작업** 드롭다운 메뉴를 선택한 다음 **삭제**를 선택합니다.

1. **삭제** 대화 상자에서 텍스트 입력 필드에 액세스 키 ID를 입력한 다음 **삭제**를 선택하여 액세스 키 삭제 여부를 확인합니다.

액세스 키가 삭제된 후에는 복구할 수 없습니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

------
#### [ API ]

다음 작업을 직접 호출:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## IAM 사용자의 액세스 키 나열
<a name="admin-list-access-key"></a>

IAM 사용자와 연결된 액세스 키 ID의 목록을 볼 수 있습니다.

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

1. **보안 자격 증명** 탭의 **액세스 키** 섹션에는 사용자의 액세스 키가 나열됩니다.

각 IAM 사용자는 두 개의 액세스 키를 가질 수 있습니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

다음 작업을 직접 호출:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## IAM 사용자의 액세스 키 나열
<a name="admin-list-access-key"></a>

IAM 사용자와 연결된 액세스 키 ID의 목록을 볼 수 있습니다.

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

1. **보안 자격 증명** 탭의 **액세스 키** 섹션에는 표시된 각 키의 상태를 포함하여 사용자의 액세스 키 ID가 나열됩니다.
**참고**  
사용자의 액세스 키 ID만 표시됩니다. 비밀 액세스 키는 키를 만들 때만 가져올 수 있습니다.

각 IAM 사용자는 두 개의 액세스 키를 가질 수 있습니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

다음 작업을 직접 호출:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## 계정의 사용자에 대한 모든 액세스 키 ID 표시
<a name="admin-list-all-access-keys"></a>

AWS 계정에서 사용자의 액세스 키 ID 목록을 볼 수 있습니다.

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

1. 필요할 경우 다음 단계를 통해 사용자 테이블에 **액세스 키 ID** 열을 추가합니다.

   1. 테이블 위 맨 오른쪽에서 **기본 설정** 아이콘(![\[Preferences icon\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/console-settings-icon.console.png))을 선택합니다.

   1. **기본 설정** 대화 상자의 **표시되는 열 선택**에서 **액세스 키 ID**를 켭니다.

   1. **확인**을 선택하여 사용자 목록으로 돌아갑니다. 액세스 키 ID를 포함하도록 목록이 업데이트됩니다.

1. **액세스 키 ID** 열에는 각 액세스 키의 상태와 ID가 표시됩니다(예: **`Active - AKIAIOSFODNN7EXAMPLE`** 또는 **`Inactive - AKIAI44QH8DHBEXAMPLE`**).

   이 정보를 사용하여 한 개 또는 두 개의 액세스 키를 가진 사용자의 액세스 키 ID를 보고 복사할 수 있습니다. 액세스 키가 없는 사용자는 이 열에 **`-`** 기호가 표시됩니다.
**참고**  
비밀 액세스 키는 키를 만들 때만 가져올 수 있습니다.

각 IAM 사용자는 두 개의 액세스 키를 가질 수 있습니다.

------

## 액세스 키 ID를 사용하여 사용자 찾기
<a name="admin-find-user-access-keys"></a>

AWS 계정에서 액세스 키 ID를 사용하여 사용자를 찾을 수 있습니다.

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창의 검색 상자에 **액세스 키 ID**(예: AKIAI44QH8DHBEXAMPLE)를 입력하세요.

1. 액세스 키 ID가 연결된 IAM 사용자가 탐색 창에 나타납니다. 사용자 이름을 선택하여 사용자 세부 정보 페이지로 이동합니다.

------

## 액세스 키 ID의 최근 사용 찾기
<a name="admin-find-most-recent-use-access-keys"></a>

액세스 키의 최근 사용은 IAM 사용자 페이지의 사용자 목록에 있는 사용자 세부 정보 페이지에 표시되며, 자격 증명 보고서의 일부분입니다.

------
#### [ Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 사용자 목록에서 **마지막으로 사용한 액세스 키** 열을 확인하세요.

   열이 표시되지 않으면 **기본 설정** 아이콘(![\[Preferences icon\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/console-settings-icon.console.png))을 선택하고 **표시되는 열 선택**에서 **마지막으로 사용한 액세스 키**를 켜면 열이 표시됩니다.

1. (선택 사항) 탐색 창의 **액세스 보고서**에서 **자격 증명 보고서**를 선택하여 계정의 모든 IAM 사용자에 대해 마지막으로 사용한 액세스 키 정보가 포함된 보고서를 다운로드합니다.

1. (선택 사항) IAM 사용자를 선택하여 사용자 세부 정보를 확인합니다. **요약** 섹션에는 액세스 키 ID, 상태 및 마지막으로 사용된 시간이 포함되어 있습니다.

------
#### [ AWS CLI ]

다음 명령 실행:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

------
#### [ API ]

다음 작업을 직접 호출:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) 

------

# 액세스 키 업데이트
<a name="id-credentials-access-keys-update"></a>

보안 [모범 사례](best-practices.md#update-access-keys)로, 필요할 때(예: 직원 퇴사) IAM 사용자 액세스 키를 업데이트하는 것이 좋습니다. 필요한 권한이 부여되면 IAM 사용자는 자신의 액세스 키를 업데이트할 수 있습니다.

IAM 사용자에게 자신의 액세스 키를 업데이트할 수 있는 권한을 부여하는 방법에 대한 자세한 내용은 [AWS: IAM 사용자가 보안 인증 페이지에서 자신의 암호, 액세스 키 및 SSH 퍼블릭 키를 관리할 수 있도록 허용](reference_policies_examples_aws_my-sec-creds-self-manage-pass-accesskeys-ssh.md) 섹션을 참조하세요. 모든 IAM 사용자가 주기적으로 암호를 업데이트하도록 요구하는 암호 정책(빈도 포함)을 계정에 적용할 수도 있습니다. 자세한 내용은 [IAM 사용자의 계정 암호 정책 설정](id_credentials_passwords_account-policy.md) 섹션을 참조하세요.

**참고**  
보안 액세스 키를 분실한 경우 액세스 키를 삭제하고 새 키를 생성해야 합니다. 시크릿 액세스 키는 생성할 때만 가져올 수 있습니다. 이 절차를 사용하여 손실된 액세스 키를 비활성화하고, 새 자격 증명으로 바꿉니다.

**Topics**
+ [IAM 사용자 액세스 키 업데이트(콘솔)](#rotating_access_keys_console)
+ [액세스 키 업데이트(AWS CLI)](#rotating_access_keys_cli)
+ [액세스 키 업데이트(AWS API)](#rotating_access_keys_api)

## IAM 사용자 액세스 키 업데이트(콘솔)
<a name="rotating_access_keys_console"></a>

AWS Management Console에서 액세스 키를 업데이트할 수 있습니다.

**애플리케이션을 중단하지 않고 IAM 사용자의 액세스 키를 업데이트하려면(콘솔)**

1. 최초 액세스 키가 활성 상태일 때 두 번째 액세스 키를 만듭니다.

   1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

   1. 탐색 창에서 **사용자**를 선택합니다.

   1. 해당 사용자의 이름을 선택한 후 **보안 자격 증명** 탭을 선택합니다.

   1. **액세스 키** 섹션에서 **액세스 키 생성**을 선택합니다. **Access key best practices & alternatives**(액세스 키 모범 사례 및 대안) 페이지에서 **Other**(기타), **Next**(다음)를 차례로 선택합니다.

   1. (선택 사항) 액세스 키에 대한 설명 태그 값을 설정하여 이 IAM 사용자에게 태그 키-값 페어를 추가합니다. 이는 나중에 액세스 키를 식별하고 업데이트하는 데 도움이 됩니다. 태그 키는 액세스 키 ID로 설정됩니다. 태그 값은 사용자가 지정하는 액세스 키 설명으로 설정됩니다. 모두 마쳤으면 **Create access key**(액세스 키 생성)를 선택합니다.

   1. **Retrieve access keys**(액세스 키 검색) 페이지에서 **Show**(표시)를 선택하여 사용자의 비밀 액세스 키 값을 표시하거나 **Download .csv file**(.csv 파일 다운로드)을 선택합니다. 이것이 비밀 액세스 키를 저장할 수 있는 유일한 기회입니다. 비밀 액세스 키를 안전한 위치에 저장한 후 **Done**(완료)을 선택합니다.

      사용자를 위한 액세스 키를 생성하면 해당 키 페어가 기본적으로 활성화되며 사용자는 이 페어를 즉시 사용할 수 있습니다. 따라서 사용자에게 두 개의 활성 액세스 키가 생깁니다.

1. 새 액세스 키를 사용하도록 모든 애플리케이션과 도구를 업데이트합니다.

1. <a name="id_credentials_access-keys-key-still-in-use"></a>가장 오래된 액세스 키의 **Last used**(마지막 사용) 정보를 검토하여 최초 액세스 키가 아직 사용 중인지 확인합니다. 한 가지 접근 방식은 며칠을 기다린 다음 계속하기 전에 사용된 적이 있는 기존 액세스 키가 있는지 확인하는 것입니다.

1. **Last used**(마지막 사용) 정보에 오래된 키가 사용된 적이 없다고 표시되더라도 최초 액세스 키를 바로 삭제하지 않는 것이 좋습니다. 대신 **Actions**(작업), **Deactivate**(비활성화)를 차례로 선택하여 첫 번째 액세스 키를 비활성화합니다.

1. 새 액세스 키만 사용하여 애플리케이션이 작동 중인지 확인합니다. 원래 액세스 키를 계속 사용하는 어떤 애플리케이션도 AWS 리소스에 더 이상 액세스할 수 없기 때문에 이 시점에 작업을 중단합니다. 그러한 애플리케이션 또는 도구를 찾는다면 최초 액세스 키를 다시 활성화할 수 있습니다. 그런 다음 [Step 3](#id_credentials_access-keys-key-still-in-use) 단원으로 돌아가 이 애플리케이션을 업데이트하여 새 키를 사용하세요.

1. 일정 기간 기다린 후 모든 애플리케이션과 도구가 업데이트되었는지 확인한 뒤에 최초 액세스 키를 삭제할 수 있습니다:

   1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

   1. 탐색 창에서 **사용자**를 선택합니다.

   1. 해당 사용자의 이름을 선택한 후 **보안 자격 증명** 탭을 선택합니다.

   1. **Access keys**(액세스 키) 섹션에서 삭제하려는 액세스 키에 대해 **Actions**(작업), **Delete**(삭제)를 차례로 선택합니다. 대화 상자의 지침에 따라 먼저 **Deactivate**(비활성화)를 수행한 다음 삭제를 확인합니다.

**업데이트하거나 삭제해야 하는 액세스 키를 결정하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 필요할 경우 다음 단계를 통해 사용자 테이블에 **Access key age(액세스 키 수명)** 열을 추가합니다.

   1. 테이블 위 맨 오른쪽에서 설정 아이콘(![\[Settings icon\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/console-settings-icon.console.png))을 선택합니다.

   1. **Manage Columns(열 관리)**에서 **Access key age(액세스 키 수명)**을 선택합니다.

   1. **닫기**를 선택하여 사용자 목록으로 돌아갑니다.

1. **Access key age(액세스 키 수명)** 열에는 가장 오래된 활성 액세스 키가 생성된 이후로 경과한 일수가 표시됩니다. 이 정보를 사용하여 업데이트하거나 삭제해야 하는 액세스 키를 소유한 사용자를 찾을 수 있습니다. 액세스 키가 없는 사용자는 이 열에 **없음**이라고 표시됩니다.

## 액세스 키 업데이트(AWS CLI)
<a name="rotating_access_keys_cli"></a>

AWS Command Line Interface에서 액세스 키를 업데이트할 수 있습니다.

**애플리케이션을 중단하지 않고 액세스 키를 업데이트하려면(AWS CLI)**

1. 최초 액세스 키가 활성 상태일 때 두 번째 액세스 키를 만들면 이 키도 기본적으로 활성 상태가 됩니다. 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

     따라서 사용자에게 두 개의 활성 액세스 키가 생깁니다.

1. <a name="step-update-apps"></a>새 액세스 키를 사용하도록 모든 애플리케이션과 도구를 업데이트합니다.

1. <a name="step-determine-use"></a>다음 명령을 사용하여 최초 액세스 키가 아직 사용 중인지 확인합니다.
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

   한 가지 접근 방식은 며칠을 기다린 다음 계속하기 전에 사용된 적이 있는 기존 액세스 키가 있는지 확인하는 것입니다.

1. [Step 3](#step-determine-use) 단계를 통해 기존 키를 사용한 적이 없다는 것이 밝혀진 경우 최초의 액세스 키를 즉시 삭제하지 말 것을 권장합니다. 그 대신 다음 명령을 사용하여 최초 액세스 키의 상태를 `Inactive`로 변경하세요.
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

1. 새 액세스 키만 사용하여 애플리케이션이 작동 중인지 확인합니다. 원래 액세스 키를 계속 사용하는 어떤 애플리케이션도 AWS 리소스에 더 이상 액세스할 수 없기 때문에 이 시점에 작업을 중단합니다. 그러한 애플리케이션 또는 도구를 찾는다면 그 상태를 `Active`로 되돌려 최초 액세스 키를 다시 활성화할 수 있습니다. 그런 다음 [Step 2](#step-update-apps) 단계로 돌아가 이 애플리케이션을 업데이트해 새 키를 사용하세요.

1. 일정 기간 기다린 후 모든 애플리케이션과 도구가 업데이트되었는지 확인한 뒤에 다음 명령을 사용하여 최초 액세스 키를 삭제할 수 있습니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

## 액세스 키 업데이트(AWS API)
<a name="rotating_access_keys_api"></a>

AWS API를 사용하여 액세스 키를 업데이트할 수 있습니다.

**애플리케이션을 중단하지 않고 액세스 키를 업데이트하려면(AWS API)**

1. 최초 액세스 키가 활성 상태일 때 두 번째 액세스 키를 만들면 이 키도 기본적으로 활성 상태가 됩니다. 다음 작업을 직접 호출:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)

     따라서 사용자에게 두 개의 활성 액세스 키가 생깁니다.

1. <a name="step-update-apps-2"></a>새 액세스 키를 사용하도록 모든 애플리케이션과 도구를 업데이트합니다.

1. <a name="step-determine-use-2"></a>다음 연산을 호출하여 최초 액세스 키가 아직 사용 중인지 확인합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)

   한 가지 접근 방식은 며칠을 기다린 다음 계속하기 전에 사용된 적이 있는 기존 액세스 키가 있는지 확인하는 것입니다.

1. [Step 3](#step-determine-use-2) 단계를 통해 기존 키를 사용한 적이 없다는 것이 밝혀진 경우 최초의 액세스 키를 즉시 삭제하지 말 것을 권장합니다. 그 대신 다음 연산을 호출하여 최초 액세스 키의 상태를 `Inactive`로 변경하세요.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)

1. 새 액세스 키만 사용하여 애플리케이션이 작동 중인지 확인합니다. 원래 액세스 키를 계속 사용하는 어떤 애플리케이션도 AWS 리소스에 더 이상 액세스할 수 없기 때문에 이 시점에 작업을 중단합니다. 그러한 애플리케이션 또는 도구를 찾는다면 그 상태를 `Active`로 되돌려 최초 액세스 키를 다시 활성화할 수 있습니다. 그런 다음 [Step 2](#step-update-apps-2) 단계로 돌아가 이 애플리케이션을 업데이트해 새 키를 사용하세요.

1. 일정 기간 기다린 후 모든 애플리케이션과 도구가 업데이트되었는지 확인한 뒤에 다음 연산을 호출하여 최초 액세스 키를 삭제할 수 있습니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)

# 액세스 키 보안
<a name="securing_access-keys"></a>

액세스 키를 보유한 사람은 누구든지 AWS 리소스에 대해 사용자와 동일한 권한으로 액세스할 수 있습니다. 따라서 AWS에서는 사용자의 액세스 키를 보호하기 위해 최선을 다하며, 사용자도 [Shared Responsibility Model](https://aws.amazon.com/compliance/shared-responsibility-model/)에 부합하도록 노력해야 합니다.

액세스 키를 보호하는 데 도움이 되는 지침을 보려면 다음 섹션을 확장하세요.

**참고**  
사용자 조직의 보안 요구 사항과 정책은 이 주제에 설명된 것과 다를 수 있습니다. 여기에 제공된 제안 사항은 일반적인 지침입니다.

## AWS 계정 루트 사용자 액세스 키 제거(또는 생성하지 않음)
<a name="root-password"></a>

**계정을 보호하는 가장 좋은 방법 중 하나는 AWS 계정 루트 사용자에 대한 액세스 키를 보유하지 않는 것입니다.** 매우 드물지만 루트 사용자 액세스 키가 필요한 경우를 제외하고는 액세스 키를 생성하지 않는 것이 좋습니다. 대신 일상적인 관리 작업을 위한 관리 사용자를 AWS IAM Identity Center에서 생성합니다. IAM Identity Center에서 관리 사용자를 생성하는 방법에 대한 자세한 내용은 *IAM Identity Center 사용 설명서*의 [Getting started](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html)를 참조하세요.

계정에 대한 루트 사용자 액세스 키가 이미 있는 경우 해당 액세스 키(있는 경우)를 현재 사용 중인 애플리케이션의 위치를 확인하고 루트 사용자 액세스 키를 IAM 사용자 액세스 키로 교체하는 것이 좋습니다. 그런 다음 루트 사용자 액세스 키를 비활성화하고 제거합니다. 액세스 키 업데이트 방법에 대한 자세한 내용은 [액세스 키 업데이트](id-credentials-access-keys-update.md) 섹션을 참조하세요.



## 장기 액세스 키 대신 임시 보안 인증(IAM 역할) 사용
<a name="use-roles"></a>

대부분의 시나리오에서는 IAM 사용자와 같이 만료되지 않는 장기 액세스 키가 필요하지 않습니다. 대신, IAM 역할을 만들고 임시 보안 인증 정보를 생성할 수 있습니다. 임시 보안 자격 증명은 액세스 키 ID와 비밀 액세스 키로 구성되지만, 자격 증명이 만료되는 시간을 나타내는 보안 토큰을 포함합니다.

장기 액세스 키(IAM 사용자 및 루트 사용자에 연결된 액세스 키)는 수동으로 취소할 때까지 유효하게 유지됩니다. 하지만 IAM 역할과 AWS Security Token Service의 기타 기능을 통해 얻는 임시 보안 인증은 단기간 내에 만료됩니다. 임시 보안 자격 증명을 사용하면 자격 증명이 실수로 노출된 경우에 위험을 줄일 수 있습니다.

다음 시나리오에서는 IAM 역할과 임시 보안 인증을 사용합니다.
+ **Amazon EC2 인스턴스에서 실행 중인 애플리케이션 또는 AWS CLI 스크립트가 있는 경우.** 애플리케이션에서 액세스 키를 직접 사용하지 않도록 합니다. 액세스 키를 애플리케이션에 전달하거나, 애플리케이션에 포함하거나, 애플리케이션에서 소스로부터 액세스 키를 읽지 않도록 합니다. 대신, 애플리케이션에 대한 적절한 권한을 가진 IAM 역할을 정의하고 [EC2의 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)을 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작합니다. 그러면 IAM 역할이 Amazon EC2 인스턴스에 연결됩니다. 이 방법을 통해 애플리케이션은 AWS에 대한 프로그래밍 방식의 직접 호출에 사용할 수 있는 임시 보안 인증을 얻을 수 있습니다. AWS SDK 및 AWS Command Line Interface(AWS CLI)에서는 역할에서 임시 보안 인증을 자동으로 가져올 수 있습니다.
+ **교차 계정 액세스 권한을 부여해야 합니다.** IAM 역할을 사용하여 계정 사이에 신뢰를 구축한 다음, 한 계정의 사용자에게 신뢰할 수 있는 계정에 액세스할 수 있는 제한된 권한을 부여합니다. 자세한 내용은 [튜토리얼: IAM 역할을 사용한 AWS 계정 간 액세스 권한 위임](tutorial_cross-account-with-roles.md) 섹션을 참조하세요.
+ **모바일 앱을 사용합니다.** 암호화된 스토리지를 포함하여 앱에 액세스 키를 포함하지 않도록 합니다. 대신, [Amazon Cognito](https://aws.amazon.com/cognito/)를 사용하여 앱에서 사용자 자격 증명을 관리합니다. 이 서비스를 사용하면 Login with Amazon, Facebook, Google 또는 OpenID Connect(OIDC) 호환 자격 증명 공급자를 통해 사용자를 인증할 수 있습니다. 그런 다음 Amazon Cognito 보안 인증 공급자를 사용하여 앱에서 AWS에 요청하는 데 사용하는 보안 인증을 관리할 수 있습니다.
+ **AWS에 연동하려고 하고 조직에서 SAML 2.0을 지원합니다.** SAML 2.0을 지원하는 자격 증명 공급자가 있는 조직에서 작업하는 경우 SAML을 사용하도록 공급자를 구성합니다. SAML을 사용하여 인증 정보를 AWS와 교환하고 임시 보안 자격 증명 세트를 다시 가져올 수 있습니다. 자세한 내용은 [SAML 2.0 연동](id_roles_providers_saml.md) 섹션을 참조하세요.
+ **AWS에 연동하려고 하고 조직에 온프레미스 자격 증명 스토어가 있습니다.** 사용자가 조직 내부에서 인증할 수 있는 경우 AWS 리소스에 액세스하기 위한 임시 보안 자격 증명을 발급하는 애플리케이션을 작성할 수 있습니다. 자세한 내용은 [AWS 콘솔에 대한 사용자 지정 ID 브로커 액세스 활성화](id_roles_providers_enable-console-custom-url.md) 섹션을 참조하세요.
+ **IAM 정책의 조건을 사용하여 예상 네트워크에서만 액세스를 허용합니다.** 퍼블릭 IP 주소 또는 가상 프라이빗 클라우드(VPC)와 같은 예상 네트워크만 지정하고 허용하는 [조건으로 IAM 정책](reference_policies_elements_condition_operators.md)을 구현하여 액세스 키의 사용 위치와 사용 방법을 제한할 수 있습니다. 이렇게 하면 액세스 키는 예상되고 허용 가능한 네트워크에서만 사용할 수 있습니다.

**참고**  
AWS 리소스에 프로그래밍 방식으로 액세스해야 하는 애플리케이션에서 Amazon EC2 인스턴스를 사용하고 있나요? 그렇다면 [EC2용 IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)을 사용하세요.

## IAM 사용자 액세스 키의 올바른 관리
<a name="iam-user-access-keys"></a>

AWS에 대한 프로그래밍 방식 액세스를 위해 액세스 키를 생성해야 하는 경우 IAM 사용자를 위한 액세스 키를 생성하여 필요한 권한만 사용자에게 부여합니다.

IAM 사용자 액세스 키를 보호하려면 다음 예방 조치를 준수합니다.
+ **액세스 키를 코드에 직접 포함하지 마십시오.** [AWS SDK](https://aws.amazon.com/tools/#sdk) 및 [AWS 명령줄 도구](https://aws.amazon.com/tools/#cli)를 사용하여 액세스 키를 알려진 위치에 보관합니다. 그러면 코드에 포함할 필요가 없습니다.

  액세스 키를 다음 중 한 곳에 보관하십시오.
  + **AWS 자격 증명 파일.** AWS SDK 및 AWS CLI에서는 AWS 자격 증명 파일에 저장된 자격 증명을 자동으로 사용합니다.

    AWS 자격 증명 파일을 사용하는 방법에 대한 자세한 내용은 SDK 설명서를 참조하십시오. 예를 들어, *AWS SDK for Java 개발자 안내서*의 [Set AWS Credentials and Region](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) 및 *AWS Command Line Interface 사용 설명서*의 [구성 및 보안 인증 파일](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)을 참조하세요.

    AWS SDK for .NET 및 AWS Tools for Windows PowerShell에 대한 보안 인증을 저장하려면 SDK 스토어를 사용하는 것이 좋습니다. 자세한 내용은 *AWS SDK for .NET 개발자 안내서*의 [Using the SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html)를 참조하세요.
  + **환경 변수.** 다중 테넌트 시스템에서 시스템 환경 변수가 아닌 사용자 환경 변수를 선택합니다.

    환경 변수를 사용하여 보안 인증을 저장하는 방법에 대한 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [환경 변수](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html)를 참조하세요.
+ **애플리케이션마다 서로 다른 액세스 키를 사용합니다.** 그러면 권한을 격리하고 액세스 키가 노출된 경우 개별 애플리케이션에 대해 액세스 키를 취소할 수 있습니다. 또한 애플리케이션별로 별도의 액세스 키를 사용하면 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) 로그 파일에 개별 항목이 생성됩니다. 이 구성을 사용하면 특정 작업을 수행한 애플리케이션을 쉽게 확인할 수 있습니다.
+ **필요한 경우 액세스 키를 업데이트합니다.** 액세스 키가 손상될 위험이 있는 경우 액세스 키를 업데이트하고 이전 액세스 키를 삭제합니다. 자세한 내용은 [액세스 키 업데이트](id-credentials-access-keys-update.md) 섹션을 참조하세요.
+ **미사용 액세스 키를 제거합니다.** 사용자가 조직을 떠나는 경우 해당 IAM 사용자를 제거합니다. 그러면 사용자는 해당 리소스에 더 이상 액세스할 수 없습니다. 액세스 키가 마지막으로 사용된 시간을 확인하려면 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) API(AWS CLI 명령: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html))를 사용합니다.
+ **가장 민감한 API 작업에 대해 임시 보안 인증을 사용하고 멀티 팩터 인증을 구성합니다.** 사용자가 호출할 수 있는 API 작업을 IAM 정책을 사용해 지정할 수 있습니다. 어떤 경우에는 특히 민감한 작업을 수행하도록 허용하기 전에 AWS MFA로 사용자를 인증하도록 요구하는 추가 보안이 필요할 수 있습니다. 예를 들어 사용자가 Amazon EC2 `RunInstances`, `DescribeInstances` 및 `StopInstances` 작업을 수행하도록 허용하는 정책이 있을 수 있습니다. 하지만 `TerminateInstances`처럼 안전하지 않은 작업의 경우 이를 제한해 사용자가 AWS MFA 디바이스에서 인증할 때만 작업을 수행하도록 해야 할 필요가 있을 수 있습니다. 자세한 내용은 [MFA를 통한 보안 API 액세스](id_credentials_mfa_configure-api-require.md) 섹션을 참조하세요.

## AWS 액세스 키를 사용하여 모바일 앱 액세스
<a name="access-keys-mobile-app"></a>

AWS 모바일 앱을 사용하여 일부 AWS 서비스 및 기능에 액세스할 수 있습니다. 모바일 앱을 사용하여 이동 중에도 인시던트 대응을 지원할 수 있습니다. 자세한 내용을 확인하고 앱을 다운로드하려면 [AWS 콘솔 모바일 애플리케이션](https://aws.amazon.com/console/mobile/)을 참조하십시오.

콘솔 암호 또는 액세스 키를 사용하여 모바일 앱에 로그인할 수 있습니다. 모범 사례로, 루트 사용자 액세스 키는 사용하지 않도록 합니다. 대신 모바일 디바이스에서 암호 또는 생체 인식 잠금을 사용하는 방법과 함께 모바일 앱을 사용하여 AWS 리소스 관리를 위한 특별히 IAM 사용자를 생성합니다. 모바일 디바이스를 분실한 경우 IAM 사용자의 액세스 권한을 제거할 수 있습니다.

**액세스 키를 사용하여 로그인하려면(모바일 앱)**

1. 모바일 디바이스에서 모바일 앱을 엽니다.

1. 디바이스에 ID를 처음 추가하는 경우 **Add an identity(ID 추가)**를 선택한 다음 **Access keys(액세스 키)**를 선택합니다.

   다른 ID를 사용하여 이미 로그인한 경우 메뉴 아이콘을 선택하고 **Switch identity(ID 전환)**를 선택합니다. 그러고 나서 **Sign in as a different identity(다른 ID로 로그인)**을 선택한 다음 **Access keys(액세스 키)**를 선택합니다.

1. **Access keys(액세스 키)** 페이지에 정보를 입력합니다.
   + **Access key ID** – 액세스 키 ID를 입력합니다.
   + **Secret access key** - 비밀 액세스 키를 입력합니다.
   + **Identity name** - 모바일 앱에 표시할 ID 이름을 입력합니다. IAM 사용자 이름과 일치하지 않아도 됩니다.
   + **Identity PIN** - 이후 로그인에 사용할 개인 식별 번호(PIN)를 생성합니다.
**참고**  
AWS 모바일 앱에 생체 인식을 활성화하면 PIN 대신 확인을 위해 지문 또는 안면 인식을 사용하라는 메시지가 표시됩니다. 생체 인식에 실패하면 PIN을 입력하라는 메시지가 대신 표시될 수 있습니다.

1. **Verify and add keys(확인하고 키 추가)**를 선택합니다.

   이제 모바일 앱을 사용하여 일부 리소스에 액세스할 수 있습니다.

## 관련 정보
<a name="more-resources"></a>

다음 주제에서는 액세스 키를 사용하도록 AWS SDK 및 AWS CLI를 설정하는 지침을 제공합니다.
+ *AWS SDK for Java 개발자 안내서*의 [Set AWS credentials and Region](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html)
+ *AWS SDK for .NET 개발자 안내서*의 [Using the SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html)
+ *AWS SDK for PHP 개발자 안내서*의 [Providing Credentials to the SDK](https://docs.aws.amazon.com/aws-sdk-php/v2/guide/credentials.html)
+ Boto 3(Python용 AWS SDK) 문서의 [Configuration](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration)
+ *AWS Tools for Windows PowerShell 사용 설명서*의 [AWS 보안 인증 사용](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) 
+ *AWS Command Line Interface 사용 설명서*의 [구성 및 보안 인증 파일](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 
+ *AWS SDK for .NET 개발자 안내서*의 [Granting access using an IAM role](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html)
+ *AWS SDK for Java 2.x*의 [Configure IAM roles for Amazon EC2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html)

## 콘솔 액세스에 액세스 키 및 비밀 키 자격 증명 사용
<a name="console-access-security-keys"></a>

AWS CLI뿐만 아니라 AWS Management Console에 직접 액세스하는 데 액세스 키 및 비밀 키 자격 증명을 사용할 수 있습니다. AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) API 직접 호출을 사용하면 가능합니다. `GetFederationToken`에서 제공하는 임시 자격 증명과 토큰을 사용하여 콘솔 URL을 구성하면 IAM 보안 주체가 콘솔에 액세스할 수 있습니다. 자세한 내용은 [AWS 콘솔에 대한 사용자 지정 ID 브로커 액세스 활성화](id_roles_providers_enable-console-custom-url.md) 섹션을 참조하세요.

MFA가 활성화된 상태에서 IAM 또는 루트 사용자 자격 증명을 사용하여 콘솔에 직접 로그인하는 경우 MFA가 필요합니다. 하지만 위에서 설명하는 방법(`GetFederationToken`에서 임시 자격 증명 사용)을 사용하는 경우 MFA가 필요하지 않습니다.



## 액세스 키 감사
<a name="Using_access-keys-audit"></a>

코드에서 AWS 액세스 키를 살펴보면 키가 자신의 계정에 속한 것인지 알 수 있습니다. 액세스 키 ID는 [https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html) AWS CLI 명령 또는 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html) AWS API 작업을 사용해 전달할 수 있습니다.

AWS CLI 및 AWS API 작업은 액세스 키가 속한 AWS 계정의 ID를 반환합니다. `AKIA`로 시작하는 액세스 키 ID는 IAM 사용자 또는 AWS 계정 루트 사용자을 위한 장기 자격 증명입니다. `ASIA`로 시작하는 액세스 키 ID는 AWS STS 작업으로 생성된 임시 자격 증명입니다. 응답으로 반환되는 계정이 자신의 소유라면 루트 사용자로 로그인하여 루트 사용자 액세스 키를 살펴볼 수 있습니다. 그런 다음 [자격 증명 보고서](id_credentials_getting-report.md)를 가져와서 키를 소유하고 있는 IAM 사용자를 알아볼 수 있습니다. `ASIA` 액세스 키의 경우 누가 임시 자격 증명을 요청했는지 알아보려면 CloudTrail 로그에서 AWS STS 이벤트를 확인하세요.

보안을 위해 [AWS CloudTrail 로그를 검토](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)하여 AWS에서 누가 작업을 수행했는지 확인할 수 있습니다. 역할 신뢰 정책에서 `sts:SourceIdentity` 조건 키를 사용하여 사용자가 역할을 수임할 때 자격 증명을 지정하도록 요구할 수 있습니다. 예를 들어 IAM 사용자가 자신의 사용자 이름을 소스 자격 증명으로 지정하도록 요구할 수 있습니다. 이를 통해 AWS에서 특정 작업을 수행한 사용자를 확인할 수 있습니다. 자세한 내용은 [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) 섹션을 참조하세요.

이 작업은 액세스 키의 상태를 표시하지 않지만 키는 활성, 비활성 또는 삭제된 상태일 수 있습니다. 활성 키에도 작업을 실행할 수 있는 권한이 없는 경우도 있습니다. 삭제된 액세스 키를 입력하면 키가 존재하지 않는다는 오류 메시지가 반환될 수 있습니다.

# IAM의 AWS 다중 인증
<a name="id_credentials_mfa"></a>

보안 강화를 위해 멀티 팩터 인증(MFA)을 구성하여 AWS 리소스를 보호하는 것이 좋습니다. IAM 사용자는 물론, 독립 실행형 계정, 관리 계정, 멤버 계정을 포함한 모든 AWS 계정의 AWS 계정 루트 사용자에 대해 MFA를 활성화할 수 있습니다. 가능하면 패스키, 보안 키 등의 피싱 방지 MFA를 사용하는 것이 좋습니다. 이러한 FIDO 기반 인증자는 퍼블릭 키 암호화를 사용하며 피싱, 중간자 공격 및 재전송 공격에 강해 TOTP 기반 옵션보다 더 강력한 보안 수준을 제공합니다.

MFA는 루트 사용자의 모든 계정 유형에 적용됩니다. 자세한 내용은 [AWS Organizations 계정 루트 사용자 자격 증명 보호](root-user-best-practices.md#ru-bp-organizations) 섹션을 참조하세요.

루트 사용자에 대해 활성화한 MFA는 루트 사용자 자격 증명에만 영향을 줍니다. 계정의 IAM 사용자는 자신의 자격 증명에 더하여 별도로 자격 증명을 갖게 되며, 이 별도의 자격 증명에 고유의 MFA가 구성됩니다. MFA를 사용하여 루트 사용자를 보호하는 방법에 대한 자세한 내용은 [AWS 계정 루트 사용자에 대한 다중 인증](enable-mfa-for-root.md) 섹션을 참조하세요.

AWS 계정 루트 사용자 및 IAM 사용자는 어떤 유형이든 최대 8개의 MFA 디바이스를 등록할 수 있습니다. 여러 MFA 디바이스를 등록하면 유연성이 향상되고 디바이스가 분실 또는 손상된 경우에도 액세스가 중단될 위험을 줄일 수 있습니다. AWS Management Console에 로그인하거나 AWS CLI를 통해 세션을 생성하는 데 하나의 MFA 디바이스만 필요합니다.

**참고**  
인간 사용자가 AWS에 액세스할 때 임시 보안 인증을 사용하도록 하는 것이 좋습니다. AWS IAM Identity Center 사용을 고려해 보셨나요? IAM Identity Center를 사용하여 여러 AWS 계정에 대한 액세스를 중앙에서 관리하고 사용자에게 한 곳에서 할당된 모든 계정에 대한 MFA 보호 Single Sign-On 액세스를 제공할 수 있습니다. IAM Identity Center를 사용하면 IAM Identity Center에서 사용자 자격 증명을 생성하고 관리하거나 기존 SAML 2.0 호환 자격 증명 제공업체에 쉽게 연결할 수 있습니다. 자세한 정보는 *AWS IAM Identity Center 사용 설명서*의 [IAM Identity Center란 무엇인가요?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) 섹션을 참조하세요.

MFA는 AWS 웹 사이트 또는 서비스에 액세스할 때 사용자의 로그인 자격 증명 외에도 AWS가 지원되는 MFA 메커니즘의 고유 인증을 제출하라고 요청함으로써 보안을 더욱 강화합니다.

## MFA 유형
<a name="id_credentials_mfa-types"></a>

AWS는 다음과 같은 MFA 유형을 지원합니다.

**Contents**
+ [패스키 및 보안 키](#passkeys-security-keys-for-iam-users)
+ [가상 인증 애플리케이션](#virtual-auth-apps-for-iam-users)
+ [하드웨어 TOTP 토큰](#hardware-totp-token-for-iam-users)

### 패스키 및 보안 키
<a name="passkeys-security-keys-for-iam-users"></a>

AWS Identity and Access Management는 MFA용 패스키 및 보안 키를 지원합니다. FIDO 표준에 기반한 패스키는 퍼블릭 키 암호화 기법을 사용하여 암호보다 안전한 강력한 피싱 방지 인증을 제공합니다. AWS는 디바이스 바운드 패스키(보안 키)와 동기화된 패스키라는 두 가지 유형의 패스키를 지원합니다.
+ **보안 키**: YubiKey처럼 2차 인증 요소로 사용되는 물리적 디바이스입니다. 하나의 보안 키가 여러 루트 사용자 계정과 IAM 사용자를 지원할 수 있습니다.
+ **동기화된 패스키**: Google, Apple, Microsoft 계정 같은 공급자와 1Password, Dashlane, Bitwarden 같은 서드 파티 서비스의 자격 증명 관리자를 2차 인증 요소로 사용합니다.

Apple MacBook의 Touch ID와 같은 내장된 생체 인식 인증자를 사용하여 자격 증명 관리자의 잠금을 해제하고 AWS에 로그인할 수 있습니다. 패스키는 지문, 얼굴 또는 디바이스 PIN을 사용하여 선택한 공급자와 함께 생성됩니다. 또한 모바일 디바이스 또는 하드웨어 보안 키와 같은 한 디바이스에 있는 교차 디바이스 인증(CDA) 패스키로 노트북 등의 다른 디바이스에 로그인할 수 있습니다. 자세한 내용은 [교차 디바이스 인증](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda)(CDA)을 참조하세요.

디바이스 간에 패스키를 동기화하여 AWS 로그인을 용이하게 하고 사용성과 복구 가능성을 높일 수 있습니다. 패스키 및 보안 키 활성화에 대한 자세한 내용은 [루트 사용자용 패스키 또는 보안 키 활성화(콘솔)](enable-fido-mfa-for-root.md) 섹션을 참조하세요.

FIDO Alliance는 FIDO 사양과 호환되는 모든 [FIDO 인증 제품](https://fidoalliance.org/certification/fido-certified-products/) 목록을 유지 관리합니다.

### 가상 인증 애플리케이션
<a name="virtual-auth-apps-for-iam-users"></a>

가상 인증 애플리케이션은 전화 또는 기타 디바이스에서 실행되고 물리적 디바이스를 에뮬레이트합니다. 가상 인증 앱은 [시간 기반 일회용 암호](https://datatracker.ietf.org/doc/html/rfc6238)(TOTP) 알고리즘을 구현하고 단일 디바이스에서 여러 토큰을 지원합니다. 사용자는 로그인 중에 안내에 따라 디바이스의 유효 코드를 입력해야 합니다. 사용자에게 할당된 각 토큰은 고유해야 합니다. 사용자는 다른 사용자의 토큰의 코드를 입력하여 인증할 수 없습니다.

가장 강력한 보호를 위해 [패스키나 보안 키](#passkeys-security-keys-for-iam-users) 등의 피싱 방지 MFA를 사용하는 것이 좋습니다. 아직 패스키나 보안 키를 사용할 수 없는 경우 하드웨어 구매 승인이나 하드웨어 도착을 기다리는 동안 임시 조치로 가상 MFA 디바이스를 사용하는 것이 좋습니다. 가상 MFA 디바이스로 사용할 수 있는 몇 가지 지원되는 앱의 목록은 [다중 인증(MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1) 섹션을 참조하세요.

IAM 사용자를 위한 가상 MFA 디바이스 설정 지침은 [AWS Management Console에서 가상 MFA 디바이스 할당](id_credentials_mfa_enable_virtual.md) 섹션을 참조하세요.

**참고**  
AWS 계정에서 할당되지 않은 가상 MFA 디바이스는 로그인 프로세스 중에 또는 AWS Management Console을 통해 새 가상 MFA 디바이스를 추가할 때 삭제됩니다. 할당되지 않은 가상 MFA 디바이스는 계정의 디바이스이지만 계정 루트 사용자 또는 IAM 사용자가 로그인 프로세스에 사용하지 않습니다. 새 가상 MFA 디바이스를 계정에 추가할 수 있도록 해당 디바이스는 삭제됩니다. 또한 디바이스 이름을 재사용할 수 있습니다.  
계정에서 할당되지 않은 가상 MFA 디바이스를 보려면 [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI 명령 또는 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 직접 호출을 사용할 수 있습니다.
가상 MFA 디바이스를 비활성화하려면 [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI 명령 또는 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) 직접 호출을 사용할 수 있습니다. 디바이스가 할당 해제됩니다.
할당되지 않은 가상 MFA 디바이스를 AWS 계정 루트 사용자 또는 IAM 사용자에게 연결하려면 [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) AWS CLI 명령 또는 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 직접 호출과 함께 디바이스에서 생성된 인증 코드가 필요합니다.

### 하드웨어 TOTP 토큰
<a name="hardware-totp-token-for-iam-users"></a>

하드웨어 디바이스가 [시간 기반 일회용 암호(TOTP) 알고리즘](https://datatracker.ietf.org/doc/html/rfc6238)에 따라 6자리 숫자 코드를 생성합니다. 사용자는 로그인할 때 두 번째 웹페이지에서 디바이스의 유효 코드를 입력해야 합니다.

이러한 토큰은 AWS 계정에서만 사용됩니다. 고유한 토큰 시드가 AWS에 안전하게 공유된 토큰만 사용할 수 있습니다. 토큰 시드는 토큰 생성 시 생성되는 비밀 키입니다. 다른 소스에서 구매한 토큰은 IAM에서 작동하지 않습니다. 호환성 보장을 위해 [OTP 토큰](https://www.amazon.com/SafeNet-IDProve-Time-based-6-Digit-Services/dp/B002CRN5X8) 또는 [OTP 디스플레이 카드](https://www.amazon.com/SafeNet-IDProve-Card-Amazon-Services/dp/B00J4NGUO4) 링크 중 하나에서 하드웨어 MFA 디바이스를 구매해야 합니다.
+ 사용자에게 할당된 각 MFA 디바이스는 고유해야 합니다. 사용자는 다른 사용자의 디바이스의 코드를 입력하여 인증받을 수 없습니다. 지원되는 하드웨어 MFA 디바이스에 대한 자세한 내용은 [다중 인증(MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1) 섹션을 참조하세요.
+ 물리적 MFA 디바이스를 사용하려는 경우 하드웨어 TOTP 디바이스 대신 보안 키를 사용하는 것이 좋습니다. 보안 키는 배터리 요구 사항이 없고, 피싱 방지 기능이 있으며, 단일 디바이스에서 여러 사용자를 지원합니다.

패스키 또는 보안 키는 AWS Management Console에서만 활성화할 수 있으며, AWS CLI 또는 AWS API에서는 활성화할 수 없습니다. 보안 키를 활성화하려면 디바이스에 물리적으로 액세스할 수 있어야 합니다.

IAM 사용자를 위한 하드웨어 TOTP 토큰 설정 지침은 [AWS Management Console에서 하드웨어 TOTP 토큰 할당](id_credentials_mfa_enable_physical.md) 섹션을 참조하세요.

**참고**  
**SMS 문자 메시지 기반 MFA** - AWS는 SMS 다중 인증(MFA) 활성화에 대한 지원을 종료했습니다. SMS 문자 메시지 기반 MFA를 사용하는 IAM 사용자가 있는 고객은 [패스키 또는 보안 키](id_credentials_mfa_enable_fido.md), [가상(소프트웨어 기반) MFA 디바이스](id_credentials_mfa_enable_virtual.md) 또는 [하드웨어 MFA 디바이스](id_credentials_mfa_enable_physical.md)와 같은 대체 방법 중 하나로 전환하는 것이 좋습니다. 계정의 사용자 중에서 SMS MFA 디바이스가 할당된 사용자를 식별할 수 있습니다. IAM 콘솔의 탐색 창에서 **사용자(Users)**를 선택하고 표의 **MFA** 열에 **SMS**가 표시된 사용자를 찾습니다.

## MFA 권장 사항
<a name="id_credentials_mfa-recommendations"></a>

AWS 자격 증명을 안전하게 보호할 수 있도록 다음의 MFA 인증 권장 사항을 따르세요.
+ MFA 디바이스로 [패스키, 보안 키](#passkeys-security-keys-for-iam-users) 등의 피싱 방지 MFA를 사용하는 것이 좋습니다. 이러한 FIDO 기반 인증자는 피싱 등의 공격으로부터 가장 강력한 보호를 제공합니다.
+ AWS 계정 루트 사용자 및 AWS 계정의 IAM 사용자에 대해 여러 MFA 디바이스를 활성화하는 것이 좋습니다. 이를 통해 AWS 계정의 보안 기준을 높이고 AWS 계정 루트 사용자 등의 권한이 높은 사용자에 대한 액세스 관리를 간소화할 수 있습니다.
+ [현재 지원되는 MFA 유형](https://aws.amazon.com/iam/features/mfa/)을 조합하여 최대 **8**개의 MFA 디바이스를 AWS 계정 루트 사용자 및 IAM 사용자에게 등록할 수 있습니다. MFA 디바이스가 여러 개인 경우 AWS Management Console에 로그인하거나 해당 사용자로 AWS CLI를 통해 세션을 생성하는 데 하나의 MFA 디바이스만 필요합니다. 추가 MFA 디바이스를 활성화하거나 비활성화하려면 IAM 사용자가 기존 MFA 디바이스로 인증해야 합니다.
+ MFA 디바이스를 분실했거나, 도난당했거나, 액세스할 수 없는 경우 나머지 MFA 디바이스 중 하나를 사용하여 AWS 계정 복구 절차를 수행하지 않고 AWS 계정에 액세스할 수 있습니다. MFA 디바이스를 분실하거나 도난당한 경우 해당 디바이스와 연결된 IAM 보안 주체에서 연결을 해제해야 합니다.
+ 여러 MFA를 사용하면 지리적으로 분산된 위치에 있거나 원격으로 작업하는 경우 직원 간에 단일 하드웨어 디바이스의 물리적 교환을 조정할 필요 없이 하드웨어 기반 MFA를 사용하여 AWS에 액세스할 수 있습니다.
+ IAM 보안 주체에 추가 MFA 디바이스를 사용하면 일상적인 사용에 하나 이상의 MFA를 사용할 수 있으며, 백업 및 중복성을 위해 보관실 또는 금고와 같은 안전한 물리적 위치에 물리적 MFA 디바이스를 보관할 수 있습니다.

**참고**  
AWS STS API 작업에 보안 키나 패스키의 MFA 정보를 전달하여 임시 자격 증명을 요청할 수 없습니다. 보안 키나 패스키를 사용할 때 `aws login` 명령을 실행하여 AWS CLI 및 AWS SDK에서 사용할 자격 증명을 얻을 수 있습니다.
AWS CLI 명령 또는 AWS API 작업을 사용하여 [FIDO 보안 키](id_credentials_mfa_enable_fido.md)를 활성화할 수 없습니다.
둘 이상의 루트 사용자 또는 IAM MFA 디바이스에 동일한 이름을 사용할 수 없습니다.

## 추가 리소스
<a name="id_credentials_mfa-resources"></a>

다음 리소스는 MFA에 대해 자세히 알아보는 데 도움이 됩니다.
+ AWS를 사용하여 리소스에 액세스하는 방법에 대한 자세한 내용은 [MFA 지원 로그인](console_sign-in-mfa.md) 단원을 참조하세요.
+  IAM Identity Center를 활용하여 AWS 액세스 포털, IAM Identity Center 통합 앱, AWS CLI에 대한 보안 MFA 액세스를 활성화할 수 있습니다. 자세한 내용은 [IAM Identity Center에서 MFA 활성화](https://docs.aws.amazon.com/singlesignon/latest/userguide/mfa-getting-started.html)를 참조하세요.

# AWS Management Console에서 패스키 또는 보안 키 할당
<a name="id_credentials_mfa_enable_fido"></a>

패스키는 AWS 리소스를 보호하기 위해 사용할 수 있는 [다중 인증(MFA) 디바이스](id_credentials_mfa.md)의 한 유형입니다. AWS는 동기화된 패스키와 디바이스 바운드 패스키(보안 키라고도 함)를 지원합니다.

동기화된 패스키를 사용하면 IAM 사용자가 모든 계정에서 모든 디바이스를 다시 등록할 필요 없이 새 디바이스를 비롯한 여러 디바이스에서 FIDO 로그인 자격 증명에 액세스할 수 있습니다. 동기화된 패스키에는 Google, Apple, Microsoft 같은 퍼스트 파티 자격 증명 관리자와 1Password, Dashlane, Bitwarden 같은 서드 파티 자격 증명 관리자가 2차 인증 요소로 포함됩니다. 온디바이스 생체 인식(예: TouchID)을 사용하여 선택한 자격 증명 관리자의 잠금을 해제하여 패스키를 사용할 수도 있습니다.

또는 디바이스 바운드 패스키를 FIDO 보안 키에 바인딩하고 FIDO 보안 키를 컴퓨터의 USB 포트에 꽂은 다음 메시지가 표시되면 탭하여 로그인 절차를 안전하게 완료할 수 있습니다. 이미 다른 서비스에 FIDO 보안 키를 사용 중이고 [AWS가 지원되는 구성](id_credentials_mfa_fido_supported_configurations.md)(예: Yubico의 YubiKey 5 시리즈)을 보유한 경우 AWS에도 사용할 수 있습니다. 그렇지 않은 경우 AWS의 MFA에 WebAuthn을 사용하려면 FIDO 보안 키를 구입해야 합니다. 또한 FIDO 보안 키는 동일한 기기에서 여러 IAM 또는 루트 사용자를 지원하여 계정 보안을 위한 유틸리티를 강화할 수 있습니다. 두 디바이스 유형의 사양 및 구입 관련 정보는 [멀티 팩터 인증](https://aws.amazon.com/iam/details/mfa/) 섹션을 참조하세요.

[현재 지원되는 MFA 유형](https://aws.amazon.com/iam/features/mfa/)을 조합하여 최대 **8**개의 MFA 디바이스를 AWS 계정 루트 사용자 및 IAM 사용자에게 등록할 수 있습니다. MFA 디바이스가 여러 개인 경우 AWS Management Console에 로그인하거나 해당 사용자로 AWS CLI를 통해 세션을 생성하는 데 하나의 MFA 디바이스만 필요합니다. 여러 개의 MFA 디바이스를 등록하는 것이 좋습니다. 예를 들어 내장된 인증자를 등록하고 물리적으로 안전한 위치에 보관하는 보안 키를 등록할 수 있습니다. 내장된 인증자를 사용할 수 없는 경우 등록된 보안 키를 사용할 수 있습니다. 인증 애플리케이션의 경우 인증 앱이 포함된 디바이스를 분실하거나 고장이 발생한 경우 계정에 대한 액세스 권한을 잃지 않도록 해당 앱에서 클라우드 백업 또는 동기화 기능을 활성화하는 것이 좋습니다.

**참고**  
인간 사용자가 AWS에 액세스할 때 임시 보안 인증을 사용하도록 하는 것이 좋습니다. 사용자는 ID 제공업체와 함께 AWS에 연동하여 회사 보안 인증 및 MFA 구성으로 인증할 수 있습니다. AWS 및 비즈니스 애플리케이션에 대한 액세스를 관리하려면 IAM Identity Center를 사용하는 것이 좋습니다. 자세한 내용은 [IAM Identity Center 사용 설명서](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)를 참조하세요.

**Topics**
+ [필요한 권한](#enable-fido-mfa-for-iam-user-permissions-required)
+ [자체 IAM 사용자 패스키 또는 보안 키 활성화(콘솔)](#enable-fido-mfa-for-own-iam-user)
+ [다른 IAM 사용자에 대한 패스키 또는 보안 키 활성화(콘솔)](#enable-fido-mfa-for-iam-user)
+ [패스키 또는 보안 키 교체](#replace-fido-mfa)
+ [패스키 및 보안 키 사용이 지원되는 구성](id_credentials_mfa_fido_supported_configurations.md)

## 필요한 권한
<a name="enable-fido-mfa-for-iam-user-permissions-required"></a>

민감한 MFA 관련 작업을 보호하면서 자체 IAM 사용자의 FIDO 패스키를 관리하려면 다음 정책에 따른 권한이 있어야 합니다.

**참고**  
ARN 값은 정적 값이며 인증을 등록하는 데 사용된 프로토콜을 나타내는 지표가 아닙니다. U2F는 더 이상 사용되지 않으므로 모든 새 구현에서 WebAuthn을 사용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## 자체 IAM 사용자 패스키 또는 보안 키 활성화(콘솔)
<a name="enable-fido-mfa-for-own-iam-user"></a>

자체 IAM 사용자의 패스키 또는 보안 키는 AWS Management Console에서만 활성화할 수 있으며, AWS CLI 또는 AWS API에서는 활성화할 수 없습니다. 보안 키를 활성화하려면 디바이스에 물리적으로 액세스할 수 있어야 합니다.

**자체 IAM 사용자 패스키 또는 보안 키를 활성화하려면(콘솔)**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 선택한 IAM 사용자의 페이지에서 **보안 자격 증명** 탭을 선택합니다.

1. **Multi-factor authentication (MFA)**(다중 인증(MFA)) 섹션에서 **Assign MFA device**(MFA 디바이스 할당)를 선택합니다.

1. **MFA 디바이스 이름** 페이지에서 **디바이스 이름**을 입력하고 **패스키 또는 보안 키**를 선택한 후 **다음**을 선택합니다.

1. **디바이스 설정**에서 패스키를 설정합니다. 얼굴이나 지문 같은 생체 인식 데이터 또는 디바이스 PIN을 사용하거나 컴퓨터의 USB 포트에 FIDO 보안 키를 삽입한 다음 탭하여 패스키를 생성합니다.

1. 브라우저의 지침을 따른 다음 **계속**을 선택합니다.

이제 AWS에서 사용할 패스키 또는 보안 키를 등록했습니다. AWS Management Console의 MFA 사용 방법에 대한 자세한 내용은 [MFA 지원 로그인](console_sign-in-mfa.md) 섹션을 참조하세요.

## 다른 IAM 사용자에 대한 패스키 또는 보안 키 활성화(콘솔)
<a name="enable-fido-mfa-for-iam-user"></a>

AWS Management Console에서만 다른 IAM 사용자에 대한 패스키 또는 보안 키를 활성화할 수 있으며, AWS CLI 또는 AWS API에서는 활성화할 수 없습니다.

**다른 IAM 사용자에 대한 패스키 또는 보안 키를 활성화하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자**에서 MFA를 활성화하려는 사용자의 이름을 선택합니다.

1. 선택한 IAM 사용자 페이지에서 **보안 자격 증명**명 탭을 선택합니다.

1. **Multi-factor authentication (MFA)**(다중 인증(MFA)) 섹션에서 **Assign MFA device**(MFA 디바이스 할당)를 선택합니다.

1. **MFA 디바이스 이름** 페이지에서 **디바이스 이름**을 입력하고 **패스키 또는 보안 키**를 선택한 후 **다음**을 선택합니다.

1. **디바이스 설정**에서 패스키를 설정합니다. 얼굴이나 지문 같은 생체 인식 데이터 또는 디바이스 PIN을 사용하거나 컴퓨터의 USB 포트에 FIDO 보안 키를 삽입한 다음 탭하여 패스키를 생성합니다.

1. 브라우저의 지침을 따른 다음 **계속**을 선택합니다.

이제 AWS에서 사용할 다른 IAM 사용자의 패스키 또는 보안 키를 등록했습니다. AWS Management Console의 MFA 사용 방법에 대한 자세한 내용은 [MFA 지원 로그인](console_sign-in-mfa.md) 섹션을 참조하세요.

## 패스키 또는 보안 키 교체
<a name="replace-fido-mfa"></a>

[현재 지원되는 MFA 유형](https://aws.amazon.com/iam/features/mfa/)을 조합하여 한 번에 최대 8개의 MFA 디바이스를 사용자에게 AWS 계정 루트 사용자 및 IAM 사용자와 함께 할당할 수 있습니다. 사용자가 FIDO 인증을 분실했거나 어떤 이유로든 교체해야 하는 경우 먼저 이전 FIDO 인증을 비활성화해야 합니다. 그런 다음, 해당 사용자를 위한 새 MFA 디바이스를 추가할 수 있습니다.
+ 현재 IAM 사용자와 연결된 디바이스를 비활성화하는 방법은 [MFA 디바이스 비활성화](id_credentials_mfa_disable.md) 섹션을 참조하세요.
+ IAM 사용자에 대한 새 FIDO 보안 키를 추가하려면 [자체 IAM 사용자 패스키 또는 보안 키 활성화(콘솔)](#enable-fido-mfa-for-own-iam-user) 섹션을 참조하세요.

새로운 패스키 또는 보안 키에 대한 액세스 권한이 없는 경우 새로운 가상 MFA 디바이스 또는 하드웨어 TOTP 토큰을 활성화할 수 있습니다. 관련 지침을 보려면 다음 중 하나를 참조하세요.
+ [AWS Management Console에서 가상 MFA 디바이스 할당](id_credentials_mfa_enable_virtual.md) 
+ [AWS Management Console에서 하드웨어 TOTP 토큰 할당](id_credentials_mfa_enable_physical.md) 

# 패스키 및 보안 키 사용이 지원되는 구성
<a name="id_credentials_mfa_fido_supported_configurations"></a>

현재 지원되는 구성을 사용하여 IAM에서 FIDO2 디바이스 바운드 패스키(보안 키라고도 함)를 다중 인증(MFA) 방법으로 사용할 수 있습니다. 여기에는 IAM에서 지원하는 FIDO2 디바이스와 FIDO2를 지원하는 브라우저가 포함됩니다. FIDO2 장치를 등록하기 전에 최신 브라우저 및 운영 체제(OS) 버전을 사용하고 있는지 확인하세요. 기능은 브라우저, 인증자, OS 클라이언트마다 다르게 작동할 수 있습니다. 한 브라우저에서 디바이스 등록이 실패하는 경우 다른 브라우저로 등록을 시도할 수 있습니다.

FIDO2는 퍼블릭 키 암호화를 기반으로 동일한 높은 수준의 보안을 제공하는 개방형 인증 표준이자 FIDO U2F의 확장입니다. FIDO2는 W3C 웹 인증 사양(WebAuthn API)과 애플리케이션 계층 프로토콜인 FIDO Alliance CTAP(Client-to-Authenticator Protocol)로 구성됩니다. CTAP는 외부 인증자를 사용하여 브라우저나 운영 체제와 같은 플랫폼이나 클라이언트 간의 통신을 가능하게 합니다. AWS에서 FIDO 인증 인증자를 활성화하면 보안 키는 AWS에서만 사용할 새 키 페어를 생성합니다. 먼저 자격 증명을 입력합니다. 메시지가 나타나면 보안 키를 탭하여 AWS가 발급한 인증 챌린지에 응답합니다. FIDO2 표준에 대한 자세한 내용을 알아보려면 [FIDO2 Project](https://en.wikipedia.org/wiki/FIDO2_Project)(FIDO2 프로젝트)를 참조하세요.

## AWS에서 지원하는 FIDO2 디바이스
<a name="id_credentials_mfa_fido_supported_devices"></a>

IAM은 USB, Bluetooth 또는 NFC를 통해 디바이스에 연결하는 FIDO2 보안 디바이스를 지원합니다. IAM은 TouchID, FaceID 등의 플랫폼 인증자도 지원합니다. IAM은 Windows Hello에 대한 로컬 패스키 등록을 지원하지 않습니다. 패스키를 생성하고 사용하려면 Windows 사용자는 모바일 디바이스와 같은 한 디바이스의 패스키나 하드웨어 보안 키를 사용하여 노트북 등의 다른 디바이스에 로그인하는 [크로스 디바이스 인증](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda)을 사용해야 합니다.

**참고**  
AWS의 경우 FIDO2 디바이스 검사를 위해 컴퓨터에 있는 물리적 USB 포트에 대한 액세스가 필요합니다. 보안 키는 가상 머신, 원격 연결 또는 브라우저의 익명 모드에서 작동하지 않습니다.

FIDO Alliance는 FIDO 사양과 호환되는 모든 [FIDO2 제품](https://fidoalliance.org/certification/fido-certified-products/) 목록을 유지 관리합니다.

## FIDO2 지원 브라우저
<a name="id_credentials_mfa_fido_browsers"></a>

웹 브라우저에서 실행되는 FIDO2 보안 장치의 사용 가능 여부는 어떤 브라우저와 운영 체제를 함께 사용하는지에 따라 달라집니다. 현재 보안 키 사용을 지원하는 브라우저는 다음과 같습니다.


****  

| 웹 브라우저 | macOS 10.15 이상 | Windows 10 | Linux | iOS 14.5 이상 | Android 7 이상 | 
| --- | --- | --- | --- | --- | --- | 
| Chrome | 예 | 예 | 예 | 예 | 아니요 | 
| Safari | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Edge | 예 | 예 | 아니요 | 예 | 아니요 | 
| Firefox | 예 | 예 | 아니요 | 예 | 아니요 | 

**참고**  
현재 FIDO2를 지원하는 대부분의 Firefox 버전에서는 기본적으로 지원을 활성화하지 않습니다. Firefox에서 FIDO2 지원을 활성하기 위한 지침은 [패스키 및 FIDO 보안 키 관련 문제 해결](troubleshoot_mfa-fido.md) 섹션을 참조하세요.  
macOS의 Firefox는 패스키에 대한 교차 디바이스 인증 워크플로를 완전히 지원하지 않을 수 있습니다. 교차 디바이스 인증을 진행하는 대신 보안 키를 터치하라는 프롬프트가 표시될 수 있습니다. macOS에서 패스키로 로그인하려면 Chrome 또는 Safari와 같은 다른 브라우저를 사용하는 것이 좋습니다.

FIDO2 인증 디바이스(예: YubiKey)의 브라우저 지원에 대한 자세한 내용은 [FIDO2 및 U2F에 대한 운영 체제 및 웹 브라우저 지원](https://support.yubico.com/hc/en-us/articles/360016615020-Operating-system-and-web-browser-support-for-FIDO2-and-U2F)을 참조하세요.

### 브라우저 플러그 인
<a name="id_credentials_mfa_fido_plugins"></a>

AWS는 FIDO2를 기본적으로 지원하는 브라우저만 지원합니다. AWS는 FIDO2 브라우저 지원을 추가하기 위한 플러그인 사용을 지원하지 않습니다. 일부 브라우저 플러그인은 FIDO2 표준과 호환되지 않으며 FIDO2 보안 키와 연결할 때 예기치 않은 결과를 초래할 수 있습니다.

브라우저 플러그인 비활성화 및 기타 문제 해결을 위한 자세한 내용은 [FIDO 보안 키를 활성화할 수 없습니다.](troubleshoot_mfa-fido.md#troubleshoot_mfa-fido-cant-enable) 섹션을 참조하세요.

## 디바이스 인증
<a name="id_credentials_mfa_fido_certifications"></a>

보안 키를 등록하는 동안에만 FIPS 검증 및 FIDO 인증 등급과 같은 디바이스 관련 인증을 캡처하고 할당합니다. 디바이스 인증은 [FIDO Alliance 메타데이터 서비스(MDS)](https://fidoalliance.org/metadata/)에서 가져옵니다. 보안 키의 인증 상태 또는 등급이 변경될 경우, 디바이스 태그에 자동으로 반영되지 않습니다. 디바이스의 인증 정보를 업데이트하려면 디바이스를 다시 등록하여 업데이트된 인증 정보를 가져와야 합니다.

AWS는 디바이스 등록 시 FIDO MDS에서 획득한 FIPS-140-2, FIPS-140-3 및 FIDO 인증 등급과 같은 인증 유형을 조건 키로 제공합니다. 선호하는 인증 유형 및 등급에 따라 IAM 정책에서 특정 인증자의 등록을 지정할 수 있습니다. 자세한 내용은 아래의 정책을 참조하세요.

### 디바이스 인증을 위한 예제 정책
<a name="id_credentials_mfa_fido_certifications_policies"></a>

다음 사용 사례는 FIPS 인증을 사용하여 MFA 디바이스를 등록할 수 있도록 허용하는 샘플 정책을 보여줍니다.

**Topics**
+ [사용 사례 1: FIPS-140-2 L2 인증을 받은 디바이스만 등록 허용](#id_credentials_mfa_fido_certifications_policies_use_case_1)
+ [사용 사례 2: FIPS-140-2 L2 및 FIDO L1 인증을 받은 디바이스의 등록 허용](#id_credentials_mfa_fido_certifications_policies_use_case_2)
+ [사용 사례 3: FIPS-140-2 L2 또는 FIPS-140-3 L2 인증을 받은 디바이스의 등록 허용](#id_credentials_mfa_fido_certifications_policies_use_case_3)
+ [사용 사례 4: FIPS-140-2 L2 인증이 있고 가상 인증 및 하드웨어 TOTP와 같은 기타 MFA 유형을 지원하는 디바이스의 등록 허용](#id_credentials_mfa_fido_certifications_policies_use_case_4)

#### 사용 사례 1: FIPS-140-2 L2 인증을 받은 디바이스만 등록 허용
<a name="id_credentials_mfa_fido_certifications_policies_use_case_1"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### 사용 사례 2: FIPS-140-2 L2 및 FIDO L1 인증을 받은 디바이스의 등록 허용
<a name="id_credentials_mfa_fido_certifications_policies_use_case_2"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2",
                    "iam:FIDO-certification": "L1"
                }
            }
        }
    ]
}
```

------

#### 사용 사례 3: FIPS-140-2 L2 또는 FIPS-140-3 L2 인증을 받은 디바이스의 등록 허용
<a name="id_credentials_mfa_fido_certifications_policies_use_case_3"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### 사용 사례 4: FIPS-140-2 L2 인증이 있고 가상 인증 및 하드웨어 TOTP와 같은 기타 MFA 유형을 지원하는 디바이스의 등록 허용
<a name="id_credentials_mfa_fido_certifications_policies_use_case_4"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Create"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Activate",
          "iam:FIDO-FIPS-140-2-certification": "L2"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "Null": {
          "iam:RegisterSecurityKey": "true"
        }
      }
    }
  ]
}
```

------

## AWS CLI 및 AWS API
<a name="id_credentials_mfa_fido_cliapi"></a>

AWS는 AWS Management Console에서만 패스키 및 보안 키 사용을 지원합니다. MFA에서의 패스키 및 보안 키 사용은 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) 및 [AWS API](https://aws.amazon.com/tools/) 또는 [MFA 보호 API 작업](id_credentials_mfa_configure-api-require.md)에 대한 액세스에서는 지원되지 않습니다.

## 추가 리소스
<a name="id_credentials_mfa_fido_additional_resources"></a>
+ AWS에서의 패스키 및 보안 키 사용에 대한 자세한 내용은 [AWS Management Console에서 패스키 또는 보안 키 할당](id_credentials_mfa_enable_fido.md) 섹션을 참조하세요.
+ AWS에서의 패스키 및 보안 키 문제 해결에 대한 도움말은 [패스키 및 FIDO 보안 키 관련 문제 해결](troubleshoot_mfa-fido.md) 섹션을 참조하세요.
+ FIDO2 지원에 대한 일반적인 업계 정보는 [FIDO2 Project](https://en.wikipedia.org/wiki/FIDO2_Project)(FIDO2 프로젝트)를 참조하세요.

# AWS Management Console에서 가상 MFA 디바이스 할당
<a name="id_credentials_mfa_enable_virtual"></a>

**중요**  
AWS는 가능한 한 AWS에 대한 MFA에 패스키나 보안 키를 사용할 것을 권장합니다. 자세한 내용은 [AWS Management Console에서 패스키 또는 보안 키 할당](id_credentials_mfa_enable_fido.md) 섹션을 참조하세요.

스마트폰 또는 기타 디바이스를 가상 MFA 디바이스로 사용할 수 있습니다. 이를 위해서는 [표준 기반 TOTP(시간 기반 일회용 암호) 알고리즘인 RFC 6238](https://datatracker.ietf.org/doc/html/rfc6238)과 호환되는 모바일 앱을 설치해야 합니다. 이러한 앱에서는 6자리 인증 코드가 생성됩니다. 보안이 취약한 모바일 디바이스에서 인증자가 실행될 수 있고 권한이 없는 당사자와 코드가 공유될 수 있기 때문에 TOTP 기반의 MFA는 [FIDO2](https://en.wikipedia.org/wiki/FIDO_Alliance#FIDO2) 보안 키, 패스키 등의 피싱 방지 옵션과 동일한 수준의 보안을 제공하지 않습니다. 피싱 등의 공격으로부터 최대한 강력한 보호를 위해서는 MFA에 패스키나 보안 키를 사용하는 것이 좋습니다.

아직 패스키나 보안 키를 사용할 수 없는 경우 하드웨어 구매 승인이나 하드웨어 도착을 기다리는 동안 임시 조치로 가상 MFA 디바이스를 사용하는 것이 좋습니다.

대부분의 가상 MFA 앱은 여러 개의 가상 디바이스 생성을 지원하므로 여러 개의 AWS 계정이나 사용자에게 동일한 앱을 사용할 수 있습니다. [MFA 유형](https://aws.amazon.com/iam/features/mfa/)을 조합하여 최대 **8**개의 MFA 디바이스를 AWS 계정 루트 사용자 및 IAM 사용자에게 등록할 수 있습니다. AWS Management Console에 로그인하거나 AWS CLI를 통해 세션을 생성하는 데 하나의 MFA 디바이스만 필요합니다. 여러 개의 MFA 디바이스를 등록하는 것이 좋습니다. 인증 애플리케이션의 경우 디바이스를 분실하거나 고장이 발생한 경우 계정에 대한 액세스 권한을 잃지 않도록 클라우드 백업 또는 동기화 기능을 활성화하는 것이 좋습니다.

AWS에서 사용하려면 가상 MFA 앱이 6자리 OTP를 생성해야 합니다. 사용할 수 있는 가상 MFA 앱 목록은 [멀티 팩터 인증](https://aws.amazon.com/iam/features/mfa/?audit=2019q1) 섹션을 참조하세요.

**Topics**
+ [필요한 권한](#mfa_enable_virtual_permissions-required)
+ [IAM 사용자에 대한 가상 MFA 디바이스 활성화(콘솔)](#enable-virt-mfa-for-iam-user)
+ [가상 MFA 디바이스 교체](#replace-virt-mfa)

## 필요한 권한
<a name="mfa_enable_virtual_permissions-required"></a>

IAM 사용자의 가상 MFA 디바이스를 관리하려면 [AWS: MFA 인증 IAM 사용자가 보안 인증 페이지에서 자신의 MFA 디바이스를 관리할 수 있도록 허용](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md) 정책에 따른 권한이 있어야 합니다.

## IAM 사용자에 대한 가상 MFA 디바이스 활성화(콘솔)
<a name="enable-virt-mfa-for-iam-user"></a>

AWS Management Console에서 IAM을 사용하여 계정의 IAM 사용자를 위한 가상 MFA 디바이스를 활성화 및 관리할 수 있습니다. 가상 MFA 디바이스를 비롯한 IAM 리소스에 태그를 연결하여 액세스를 식별, 구성 및 제어할 수 있습니다. AWS CLI 또는 AWS API를 사용하는 경우에만 가상 MFA 디바이스를 태깅할 수 있습니다. AWS CLI 또는 AWS API를 사용하여 MFA 장치를 활성화하고 관리하려면 [AWS CLI 또는 AWS API에서 MFA 디바이스 할당](id_credentials_mfa_enable_cliapi.md) 섹션을 참조하세요. IAM 리소스 태깅에 대한 자세한 내용은 [AWS Identity and Access Management 리소스용 태그](id_tags.md) 섹션을 참조하세요.

**참고**  
MFA를 구성하려면 사용자의 가상 MFA 디바이스가 호스팅되는 하드웨어에 대한 물리적 액세스가 필요합니다. 예를 들어, 스마트폰에서 가상 MFA 디바이스를 실행하는 사용자에게 MFA를 구성할 수 있습니다. 이 경우 마법사를 완료하기 위해 스마트폰을 사용할 수 있어야 합니다. 이러한 이유로 사용자가 자신의 가상 MFA 디바이스를 직접 구성 및 관리할 수 있도록 허용하는 것이 좋습니다. 이 경우에는 사용자에게 필요한 IAM 작업을 수행할 권한을 부여해야 합니다. 이러한 권한을 부여하는 IAM 정책에 대한 자세한 내용과 예는 [IAM 자습서: 사용자가 자신의 자격 증명 및 MFA 설정을 관리하도록 허용](tutorial_users-self-manage-mfa-and-creds.md) 및 예제 정책 [AWS: MFA 인증 IAM 사용자가 보안 인증 페이지에서 자신의 MFA 디바이스를 관리할 수 있도록 허용](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md)의 내용을 참조하세요.

**IAM 사용자에 대한 가상 MFA 디바이스를 활성화하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. **사용자** 목록에서 IAM 사용자 이름을 선택합니다.

1. [**Security Credentials**] 탭을 선택합니다. **Multi-factor authentication (MFA)**(다중 인증(MFA)) 섹션에서 **Assign MFA device**(MFA 디바이스 할당)를 선택합니다.

1. 마법사에서 **디바이스 이름**을 입력하고 **인증 앱**을 선택한 후 **다음**을 선택합니다.

   IAM은 QR 코드 그래픽을 포함하여 가상 MFA 디바이스의 구성 정보를 생성 및 표시합니다. 그래픽은 QR 코드를 지원하지 않는 디바이스 상에서 수동 입력할 수 있는 '보안 구성 키'를 표시한 것입니다.

1. 가상 MFA 앱을 엽니다. 가상 MFA 디바이스의 호스팅에 사용되는 앱 목록은 [멀티 팩터 인증](https://aws.amazon.com/iam/details/mfa/)을 참조하세요.

   가상 MFA 앱이 다수의 가상 MFA 디바이스 또는 계정을 지원하는 경우 새로운 가상 MFA 디바이스 또는 계정을 생성하는 옵션을 선택합니다.

1. MFA 앱의 QR 코드 지원 여부를 결정한 후 다음 중 한 가지를 실행합니다.
   + 마법사에서 **Show QR code(QT 코드 표시)**를 선택한 다음 해당 앱을 사용하여 QR 코드를 스캔합니다. 디바이스의 카메라를 사용하여 코드를 스캔하는 카메라 아이콘 또는 **스캔 모드** 옵션이 있을 수 있습니다.
   + 마법사에서 **Show secret key**(보안 키 표시)를 선택한 다음 MFA 앱에 보안 키를 입력합니다.

   모든 작업을 마치면 가상 MFA 디바이스가 일회용 암호 생성을 시작합니다.

1. **MFA 디바이스 설정** 페이지의 **MFA 코드 1** 상자에 현재 가상 MFA 디바이스에 표시된 일회용 암호를 입력합니다. 디바이스가 새로운 일회용 암호를 생성할 때까지 최대 30초 기다립니다. 그런 다음 두 번째 일회용 암호를 **MFA code 2(MFA 코드 2)** 상자에 입력합니다. **Add MFA**(MFA 추가)를 선택합니다.
**중요**  
코드를 생성한 후 즉시 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 MFA 디바이스가 사용자와 연결은 되지만 MFA 디바이스가 동기화되지 않습니다. 이는 시간 기반 일회용 암호(TOTP)가 잠시 후에 만료되기 때문입니다. 이 경우, [디바이스를 재동기화](id_credentials_mfa_sync.md)할 수 있습니다.

이제 AWS에서 가상 MFA 디바이스를 사용할 준비가 끝났습니다. AWS Management Console의 MFA 사용 방법에 대한 자세한 내용은 [MFA 지원 로그인](console_sign-in-mfa.md) 섹션을 참조하세요.

**참고**  
AWS 계정에서 할당되지 않은 가상 MFA 디바이스는 로그인 프로세스 중에 또는 AWS Management Console을 통해 새 가상 MFA 디바이스를 추가할 때 삭제됩니다. 할당되지 않은 가상 MFA 디바이스는 계정의 디바이스이지만 계정 루트 사용자 또는 IAM 사용자가 로그인 프로세스에 사용하지 않습니다. 새 가상 MFA 디바이스를 계정에 추가할 수 있도록 해당 디바이스는 삭제됩니다. 또한 디바이스 이름을 재사용할 수 있습니다.  
계정에서 할당되지 않은 가상 MFA 디바이스를 보려면 [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI 명령 또는 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 직접 호출을 사용할 수 있습니다.
가상 MFA 디바이스를 비활성화하려면 [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI 명령 또는 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) 직접 호출을 사용할 수 있습니다. 디바이스가 할당 해제됩니다.
할당되지 않은 가상 MFA 디바이스를 AWS 계정 루트 사용자 또는 IAM 사용자에게 연결하려면 [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) AWS CLI 명령 또는 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 직접 호출과 함께 디바이스에서 생성된 인증 코드가 필요합니다.

## 가상 MFA 디바이스 교체
<a name="replace-virt-mfa"></a>

MFA 유형을 조합하여 최대 **8개**의 MFA 디바이스를 AWS 계정 루트 사용자 및 IAM 사용자에게 등록할 수 있습니다. 사용자가 디바이스를 분실하거나 이유를 불문하고 교체할 필요가 있을 경우, 기존 디바이스를 비활성화해야 합니다. 그런 다음, 해당 사용자를 위한 새 디바이스를 추가할 수 있습니다.
+ 현재 다른 IAM 사용자와 연결되어 있는 디바이스를 비활성화하는 방법은 [MFA 디바이스 비활성화](id_credentials_mfa_disable.md) 섹션을 참조하세요.
+ 다른 IAM 사용자에 대해 교체용 가상 MFA 디바이스를 추가하려면 위의 [IAM 사용자에 대한 가상 MFA 디바이스 활성화(콘솔)](#enable-virt-mfa-for-iam-user) 절차에 나와 있는 단계를 따르세요.
+ AWS 계정 루트 사용자를 위한 교체용 가상 MFA 디바이스를 추가하려면 [루트 사용자용 가상 MFA 디바이스 활성화(콘솔)](enable-virt-mfa-for-root.md) 절차에 나와 있는 단계를 따릅니다.

# AWS Management Console에서 하드웨어 TOTP 토큰 할당
<a name="id_credentials_mfa_enable_physical"></a>

**중요**  
AWS는 가능한 한 AWS에 대한 MFA에 패스키나 보안 키를 사용할 것을 권장합니다. 자세한 내용은 [AWS Management Console에서 패스키 또는 보안 키 할당](id_credentials_mfa_enable_fido.md) 섹션을 참조하세요.

하드웨어 TOTP 토큰은 시간 기반 일회용 암호(TOTP) 알고리즘에 따라 6자리 숫자 코드를 생성합니다. 사용자는 로그인 과정 중 디바이스의 유효 코드를 입력해야 합니다. 사용자에게 할당된 각 MFA 디바이스는 고유해야 합니다. 사용자는 다른 사용자의 디바이스 코드를 입력하여 인증받을 수 없습니다. MFA 디바이스는 계정이나 사용자 간에 공유할 수 없습니다.

하드웨어 TOTP 토큰과 [FIDO 보안 키](id_credentials_mfa_enable_fido.md)는 모두 본인이 구입한 물리적 디바이스여야 합니다. 하드웨어 MFA 디바이스는 AWS에 로그인할 때 인증을 위한 TOTP 코드를 생성합니다. 이는 배터리를 사용하므로 시간이 지남에 따라 교체 및 AWS 재동기화가 필요할 수 있습니다. 공개 키 암호화를 활용하는 FIDO 보안 키는 배터리가 필요 없으며 원활한 인증 프로세스를 제공합니다. 피싱 방지를 위해 TOTP 장치보다 안전한 FIDO 보안 키를 사용하는 것이 좋습니다. 또한 FIDO 보안 키는 동일한 기기에서 여러 IAM 또는 루트 사용자를 지원하여 계정 보안을 위한 유틸리티를 강화할 수 있습니다. 두 디바이스 유형의 사양 및 구입 관련 정보는 [멀티 팩터 인증](https://aws.amazon.com/iam/details/mfa/) 섹션을 참조하세요.



AWS Management Console, 명령줄 또는 IAM API에서 IAM 사용자의 하드웨어 TOTP 토큰을 활성화할 수 있습니다. AWS 계정 루트 사용자에 따른 MFA 디바이스 활성화 방법은 [루트 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)](enable-hw-mfa-for-root.md) 단원을 참조하세요.

[현재 지원되는 MFA 유형](https://aws.amazon.com/iam/features/mfa/)을 조합하여 최대 **8**개의 MFA 디바이스를 AWS 계정 루트 사용자 및 IAM 사용자에게 등록할 수 있습니다. MFA 디바이스가 여러 개인 경우 AWS Management Console에 로그인하거나 해당 사용자로 AWS CLI를 통해 세션을 생성하는 데 하나의 MFA 디바이스만 필요합니다.

**중요**  
MFA 디바이스를 분실했거나 액세스할 수 없는 경우 사용자가 계정에 계속 액세스할 수 있도록 여러 MFA 디바이스를 활성화하는 것이 좋습니다.

**참고**  
명령줄에서 MFA 디바이스를 활성화하려는 경우 [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html)를 사용합니다. IAM API를 사용하여 MFA 디바이스를 활성화하려면 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 작업을 사용합니다.

**Topics**
+ [필요한 권한](#enable-hw-mfa-for-iam-user-permissions-required)
+ [자신의 IAM 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)](#enable-hw-mfa-for-own-iam-user)
+ [다른 IAM 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)](#enable-hw-mfa-for-iam-user)
+ [물리적 MFA 디바이스 교체](#replace-phys-mfa)

## 필요한 권한
<a name="enable-hw-mfa-for-iam-user-permissions-required"></a>

중요한 MFA 관련 작업을 보호하면서 자신의 IAM 사용자에 대한 하드웨어 TOTP 토큰을 관리하려면 다음 정책에 따른 권한이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## 자신의 IAM 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)
<a name="enable-hw-mfa-for-own-iam-user"></a>

 AWS Management Console에서 자신의 하드웨어 TOTP 토큰을 활성화할 수 있습니다.

**참고**  
하드웨어 TOTP 토큰을 활성화하려면 디바이스에 물리적으로 액세스할 수 있어야 합니다.

**자신의 IAM 사용자에 대해 하드웨어 TOTP 토큰을 활성화하려면 다음을 수행하세요(콘솔).**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. **AWS IAM credentials** 탭의 **Multi-factor authentication (MFA)**(다중 인증(MFA)) 섹션에서 **Assign MFA device**(MFA 디바이스 할당)를 선택합니다.

1. 마법사에서 **Device name**(디바이스 이름)을 입력하고 **Hardware TOTP token**(하드웨어 TOTP 토큰), **Next**(다음)를 차례로 선택합니다.

1. 디바이스 일련 번호를 입력합니다. 일련 번호는 보통 디바이스 후면에 있습니다.

1. **MFA code 1(MFA 코드 1)** 상자에 MFA 디바이스에 표시된 6자리 번호를 입력합니다. 디바이스 전면의 버튼을 눌러야 번호가 표시되는 경우도 있습니다.  
![\[IAM 대시보드, MFA 디바이스\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/MFADevice.png)

1. 디바이스가 코드를 새로 고칠 때까지 30초 동안 기다린 다음 **MFA code 2(MFA 코드 2)** 상자에 다음 6자리 번호를 입력합니다. 다시 디바이스 전면의 버튼을 눌러야 두 번째 번호가 표시되는 경우도 있습니다.

1. **Add MFA**(MFA 추가)를 선택합니다.
**중요**  
인증 코드를 생성한 후 바로 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 MFA 디바이스가 사용자와 연결은 되지만 MFA 디바이스가 동기화되지 않습니다. 이는 시간 기반 일회용 암호(TOTP)가 잠시 후에 만료되기 때문입니다. 이 경우, [디바이스를 재동기화](id_credentials_mfa_sync.md)할 수 있습니다.

이제 AWS에서 디바이스를 사용할 준비가 끝났습니다. AWS Management Console의 MFA 사용 방법에 대한 자세한 내용은 [MFA 지원 로그인](console_sign-in-mfa.md) 섹션을 참조하세요.

## 다른 IAM 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)
<a name="enable-hw-mfa-for-iam-user"></a>

 AWS Management Console에서 다른 IAM 사용자에 대해 하드웨어 TOTP 토큰을 활성화할 수 있습니다.

**다른 IAM 사용자에 대해 하드웨어 TOTP 토큰을 활성화하려면 다음을 수행하세요(콘솔).**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. MFA를 활성화하려는 사용자의 이름을 선택합니다.

1. [**Security Credentials**] 탭을 선택합니다. **Multi-factor authentication (MFA)**(다중 인증(MFA)) 섹션에서 **Assign MFA device**(MFA 디바이스 할당)를 선택합니다.

1. 마법사에서 **Device name**(디바이스 이름)을 입력하고 **Hardware TOTP token**(하드웨어 TOTP 토큰), **Next**(다음)를 차례로 선택합니다.

1. 디바이스 일련 번호를 입력합니다. 일련 번호는 보통 디바이스 후면에 있습니다.

1. **MFA code 1(MFA 코드 1)** 상자에 MFA 디바이스에 표시된 6자리 번호를 입력합니다. 디바이스 전면의 버튼을 눌러야 번호가 표시되는 경우도 있습니다.  
![\[IAM 대시보드, MFA 디바이스\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/MFADevice.png)

1. 디바이스가 코드를 새로 고칠 때까지 30초 동안 기다린 다음 **MFA code 2(MFA 코드 2)** 상자에 다음 6자리 번호를 입력합니다. 다시 디바이스 전면의 버튼을 눌러야 두 번째 번호가 표시되는 경우도 있습니다.

1. **Add MFA**(MFA 추가)를 선택합니다.
**중요**  
인증 코드를 생성한 후 바로 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 MFA 디바이스가 사용자와 연결은 되지만 MFA 디바이스가 동기화되지 않습니다. 이는 시간 기반 일회용 암호(TOTP)가 잠시 후에 만료되기 때문입니다. 이 경우, [디바이스를 재동기화](id_credentials_mfa_sync.md)할 수 있습니다.

이제 AWS에서 디바이스를 사용할 준비가 끝났습니다. AWS Management Console의 MFA 사용 방법에 대한 자세한 내용은 [MFA 지원 로그인](console_sign-in-mfa.md) 섹션을 참조하세요.

## 물리적 MFA 디바이스 교체
<a name="replace-phys-mfa"></a>

[현재 지원되는 MFA 유형](https://aws.amazon.com/iam/features/mfa/)을 조합하여 한 번에 최대 8개의 MFA 디바이스를 사용자에게 AWS 계정 루트 사용자 및 IAM 사용자와 함께 할당할 수 있습니다. 사용자가 디바이스를 분실하거나 이유를 불문하고 교체할 필요가 있을 경우, 먼저 기존 디바이스를 비활성화해야 합니다. 그런 다음, 해당 사용자를 위한 새 디바이스를 추가할 수 있습니다.
+ 현재 어떤 사용자와 연결되어 있는 디바이스를 비활성화하는 방법은 [MFA 디바이스 비활성화](id_credentials_mfa_disable.md) 섹션을 참조하세요.
+ IAM 사용자에 대해 교체 하드웨어 TOTP 토큰을 추가하려면, 이 주제 앞부분의 [다른 IAM 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)](#enable-hw-mfa-for-iam-user) 절차에 나오는 단계를 따르세요.
+ AWS 계정 루트 사용자 사용자에 대해 교체 하드웨어 TOTP 토큰을 추가하려면, 이 주제 앞부분의 절차 [루트 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)](enable-hw-mfa-for-root.md)에 나오는 단계를 따르세요.

# AWS CLI 또는 AWS API에서 MFA 디바이스 할당
<a name="id_credentials_mfa_enable_cliapi"></a>

AWS CLI 명령 또는 AWS API 작업을 사용하여 IAM 사용자를 위한 가상 MFA 디바이스를 활성화할 수 있습니다. AWS CLI, AWS API, Tools for Windows PowerShell 또는 기타 다른 명령줄 도구를 사용하면 AWS 계정 루트 사용자에 대해 MFA 디바이스를 활성화할 수 없습니다. 그러나 AWS Management Console을 사용하여 루트 사용자의 MFA 디바이스를 활성화할 수 있습니다.

AWS Management Console에서 MFA 디바이스를 활성화할 때 콘솔이 사용자를 대신해 여러 단계를 수행합니다. 대신 AWS CLI, Tools for Windows PowerShell 또는 AWS API를 사용해 가상 디바이스를 생성한다면 수동으로 올바른 순서에 따라 단계들을 수행해야 합니다. 예를 들어 가상 MFA 디바이스를 생성하려면 IAM 객체를 생성하고, 코드를 문자열이나 QR 코드 그래픽으로 추출해야 합니다. 그런 다음 디바이스를 동기화하여 IAM 사용자와 연결해야 합니다. 자세한 정보는 [New-IAMVirtualMFADevice](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=New-IAMVirtualMFADevice.html&tocid=New-IAMVirtualMFADevice)의 **Examples** 섹션을 참조하세요. 물리적 디바이스를 위해서는 생성 단계를 건너뛰고 디바이스를 동기화하고 사용자에게 직접 연결합니다.

가상 MFA 디바이스를 비롯한 IAM 리소스에 태그를 연결하여 액세스를 식별, 구성 및 제어할 수 있습니다. AWS CLI 또는 AWS API를 사용하는 경우에만 가상 MFA 디바이스를 태깅할 수 있습니다.

SDK 또는 CLI를 사용하는 IAM 사용자는 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html)를 호출하여 추가 MFA 디바이스를 활성화하거나 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)를 호출하여 기존 MFA 디바이스를 비활성화할 수 있습니다. 이 작업을 성공적으로 수행하려면 먼저 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)을 호출하고 기존 MFA 디바이스로 MFA 코드를 제출해야 합니다. 이 호출은 MFA 인증이 필요한 API 작업에 서명하는 데 사용할 수 있는 임시 보안 자격 증명을 반환합니다. 요청 및 응답의 예는 [`GetSessionToken` - 신뢰할 수 없는 환경에 있는 사용자를 위한 임시 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken)을 참조하세요.

**IAM에서 가상 디바이스 개체를 생성하여 가상 MFA 디바이스를 나타내려면**  
이러한 명령은 다음 명령의 많은 일련 번호 대신 사용되는 디바이스에 ARN을 제공합니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html) 

**AWS에서 사용할 목적으로 MFA 디바이스를 활성화하려면**  
다음 명령은 디바이스와 AWS를 동기화하여 사용자에 연결합니다. 디바이스가 가상이라면 가상 디바이스의 ARN을 일련 번호로 사용합니다.

**중요**  
인증 코드를 생성한 후 바로 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 MFA 디바이스가 사용자와 연결은 되지만 MFA 디바이스가 동기화되지 않습니다. 이는 시간 기반 일회용 암호(TOTP)가 잠시 후에 만료되기 때문입니다. 이 경우, 아래에서 설명하는 명령을 사용하여 디바이스를 재동기화할 수 있습니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 

**디바이스를 비활성화하려면**  
다음 명령을 사용하여 디바이스를 사용자에게서 분리하고 비활성화합니다. 디바이스가 가상이라면 가상 디바이스의 ARN을 일련 번호로 사용합니다. 별도로 가상 디바이스 개체를 삭제해야 합니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

**가상 MFA 디바이스 개체를 표시하려면**  
다음 명령을 사용하여 가상 MFA 디바이스 개체의 목록을 봅니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 

**가상 MFA 디바이스를 태깅하려면**  
다음 명령을 사용하여 가상 MFA 디바이스를 태깅합니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html) 

**가상 MFA 디바이스의 태그를 나열하려면**  
다음 명령을 사용하여 가상 MFA 디바이스에 연결된 태그를 나열합니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html) 

**가상 MFA 디바이스를 태깅 해제하려면**  
다음 명령을 사용하여 가상 MFA 디바이스에 연결된 태그를 제거합니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html) 

**MFA 디바이스를 다시 동기화하려면**  
디바이스가 AWS에서 허용하지 않는 코드를 생성하는 경우 이러한 명령을 사용하세요. 디바이스가 가상이라면 가상 디바이스의 ARN을 일련 번호로 사용합니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html) 

**IAM에서 가상 MFA 디바이스 엔터티를 삭제하려면**  
디바이스가 사용자로부터 분리된 후에 디바이스 개체를 삭제할 수 있습니다.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html) 

**분실되었거나 작동하지 않는 가상 MFA 디바이스를 복구하는 방법**  
간혹 가상 MFA 앱이 호스팅된 사용자의 디바이스가 분실 또는 교체되었거나 작동하지 않는 경우가 있을 수 있습니다. 이러한 경우가 발생하면 사용자는 자체적으로 복구할 수 없습니다. 사용자는 관리자에게 문의하여 디바이스를 비활성화해야 합니다. 자세한 내용은 [IAM에서 MFA로 보호되는 ID 복구](id_credentials_mfa_lost-or-broken.md) 섹션을 참조하세요.

# MFA 상태 확인
<a name="id_credentials_mfa_checking-status"></a>

IAM 콘솔을 사용하여 AWS 계정 루트 사용자 또는 IAM 사용자가 유효한 MFA 디바이스를 활성화했는지를 확인할 수 있습니다.

**루트 사용자의 MFA 상태를 확인하려면**

1. 루트 사용자 자격 증명으로 AWS Management Console에 로그인한 다음 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.

1. [**멀티 팩터 인증(MFA)(Multi-factor Authentication (MFA))**]에서 MFA가 활성화되었는지 비활성화되었는지 여부를 확인합니다. MFA가 활성화되어 있지 않으면 알림 기호(![\[Alert icon\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/console-alert-icon.console.png))가 표시됩니다.

계정에 대해 MFA를 활성화하고 싶다면 다음 중 하나를 참조하세요.
+ [루트 사용자용 가상 MFA 디바이스 활성화(콘솔)](enable-virt-mfa-for-root.md)
+ [루트 사용자용 패스키 또는 보안 키 활성화(콘솔)](enable-fido-mfa-for-root.md)
+ [루트 사용자에 대해 하드웨어 TOTP 토큰 활성화(콘솔)](enable-hw-mfa-for-root.md)

**IAM 사용자의 MFA 상태를 확인하려면**

1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 필요할 경우 다음 단계를 통해 사용자 테이블에 **MFA** 열을 추가합니다.

   1. 테이블 위 맨 오른쪽에서 설정 아이콘(![\[Settings icon\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/console-settings-icon.console.png))을 선택합니다.

   1. **열 관리(Manage Columns)**에서 **MFA**를 선택합니다.

   1. (선택 사항) 사용자 테이블에 표시하지 않으려는 열 제목의 확인란을 선택 취소하세요.

   1. **닫기**를 선택하여 사용자 목록으로 돌아갑니다.

1. **MFA** 열에는 활성화된 MFA 디바이스가 표시됩니다. 사용자에게 활성화되어 있는 MFA 디바이스가 없으면 콘솔에 **없음(None)**이라고 표시됩니다. 사용자에게 활성화된 MFA 디바이스가 있으면 **MFA** 열에 활성화된 디바이스의 유형이 **Virtual**(가상), **Security key**(보안 키), **Hardware**(하드웨어) 또는 **SMS** 값으로 표시됩니다.
**참고**  
AWS는 SMS 다중 인증(MFA) 활성화에 대한 지원을 종료했습니다. SMS 문자 메시지 기반 MFA를 사용하는 IAM 사용자가 있는 고객은 [가상(소프트웨어 기반) MFA 디바이스](id_credentials_mfa_enable_virtual.md), [FIDO 보안 키](id_credentials_mfa_enable_fido.md) 또는 [하드웨어 MFA 디바이스](id_credentials_mfa_enable_physical.md)와 같은 대체 방법 중 하나로 전환하는 것이 좋습니다. 계정의 사용자 중에서 SMS MFA 디바이스가 할당된 사용자를 식별할 수 있습니다. 이렇게 하려면 IAM 콘솔로 이동하여 탐색 창에서 **사용자**를 선택하고 표의 **MFA** 열에서 **SMS**가 표시된 사용자를 찾습니다.

1. 사용자의 MFA 디바이스에 대한 추가 정보를 보려면 MFA 상태를 확인하려는 사용자의 이름을 선택합니다. 그런 다음 **보안 자격 증명(Security credentials)** 탭을 선택합니다.

1. 사용자에게 활성화되어 있는 MFA 디바이스가 없으면 콘솔에 **MFA 디바이스 없음이라고 표시됩니다. **다중 인증(MFA)** 섹션에서 MFA 디바이스를 할당해 AWS 환경의 보안을 개선합니다**. 사용자가 MFA 디바이스를 활성화한 경우 **Multi-factor authentication (MFA)**(다중 인증(MFA)) 섹션에 디바이스에 대한 세부 정보가 표시됩니다.
   + 디바이스 이름
   + 디바이스 유형입니다.
   + 물리적 디바이스의 일련 번호 또는 가상 디바이스의 AWS ARN과 같은 디바이스 식별자
   + 디바이스가 생성된 시기

디바이스를 제거하거나 다시 동기화하려면 디바이스 옆에 있는 라디오 버튼을 선택하고 **Remove**(제거) 또는 **Resync**(다시 동기화)를 선택합니다.

MFA 활성화에 대한 자세한 내용은 다음을 참조하세요.
+ [AWS Management Console에서 가상 MFA 디바이스 할당](id_credentials_mfa_enable_virtual.md)
+ [AWS Management Console에서 패스키 또는 보안 키 할당](id_credentials_mfa_enable_fido.md)
+ [AWS Management Console에서 하드웨어 TOTP 토큰 할당](id_credentials_mfa_enable_physical.md)

# 가상 및 하드웨어 MFA 디바이스 재동기화
<a name="id_credentials_mfa_sync"></a>

AWS를 사용하여 가상 및 하드웨어 멀티 팩터 인증(MFA) 디바이스를 다시 동기화할 수 있습니다. 디바이스를 사용하려고 할 때 디바이스가 동기화되지 않으면 로그인 시도가 실패하고 디바이스를 다시 동기화하라는 메시지가 IAM에 표시됩니다.

**참고**  
FIDO 보안 키는 항상 동기화되어 있습니다. FIDO 보안 키를 분실했거나 도난당한 경우 비활성화할 수 있습니다. 모든 MFA 디바이스 유형의 비활성화에 대한 지침은 [다른 IAM 사용자에 대해 MFA 디바이스를 비활성화하려면(콘솔)](id_credentials_mfa_disable.md#deactivate-mfa-for-user) 섹션을 참조하세요.

AWS 관리자는 IAM 사용자의 가상 및 하드웨어 MFA 디바이스가 동기화 상태를 벗어난 경우 이를 재동기화할 수 있습니다.

AWS 계정 루트 사용자 MFA 디바이스가 작동하지 않는 경우 로그인 프로세스 완료 여부와 관계없이 IAM 콘솔을 사용하여 디바이스를 재동기화할 수 있습니다. 디바이스를 성공적으로 다시 동기화할 수 없는 경우 연결을 해제하고 다시 연결해야 할 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 [MFA 디바이스 비활성화](id_credentials_mfa_disable.md) 및 [IAM의 AWS 다중 인증](id_credentials_mfa.md) 섹션을 참조하세요.

**Topics**
+ [필요한 권한](#id_credentials_mfa_sync_console-permissions-required)
+ [가상 및 하드웨어 MFA 디바이스 재동기화(IAM 콘솔)](#id_credentials_mfa_sync_console)
+ [가상 및 하드웨어 MFA 디바이스 재동기화(AWS CLI)](#id_credentials_mfa_sync_cli)
+ [가상 및 하드웨어 MFA 디바이스 재동기화(AWS API)](#id_credentials_mfa_sync_api)

## 필요한 권한
<a name="id_credentials_mfa_sync_console-permissions-required"></a>

IAM 사용자의 가상 또는 하드웨어 MFA 장치를 다시 동기화하려면 다음 정책에 따른 권한이 있어야 합니다. 이 정책에서는 장치를 생성하거나 비활성화하는 것을 허용하지 않습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToViewAndManageTheirOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "BlockAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## 가상 및 하드웨어 MFA 디바이스 재동기화(IAM 콘솔)
<a name="id_credentials_mfa_sync_console"></a>

IAM 콘솔을 사용하여 가상 및 하드웨어 MFA 디바이스를 재동기화할 수 있습니다.

**자신의 IAM 사용자에 대한 가상 또는 하드웨어 MFA 디바이스를 다시 동기화하려면(콘솔)**

1. AWS 계정 ID나 계정 별칭, IAM 사용자 이름 및 암호를 사용하여 [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.
**참고**  
사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 **다른 계정에 로그인(Sign in to a different account)**을 선택하여 기본 로그인 페이지로 돌아갑니다. 여기서 AWS 계정 ID 또는 계정 별칭을 입력하면 계정의 IAM 사용자 로그인 페이지로 리디렉션됩니다.

   AWS 계정 ID를 받으려면 관리자에게 문의하세요.

1. 오른쪽 상단의 탐색 모음에서 사용자 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다.  
![\[AWS Management Console 보안 자격 증명 링크\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. **AWS IAM 보안 인증** 탭의 **다중 인증(MFA)** 섹션에서 MFA 디바이스 옆의 라디오 버튼을 선택하고 **다시 동기화**를 선택합니다.

1. 디바이스에서 순차적으로 생성된 다음 2개의 코드를 **MFA code 1(MFA 코드 1)** 및 **MFA code 2(MFA 코드 2)**에 입력합니다. 그런 다음 **Resync**(다시 동기화)를 선택합니다.
**중요**  
코드를 생성한 후 즉시 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 요청이 처리되는 것으로 보이지만 디바이스가 동기화되지 않습니다. 이는 시간 기반 일회용 암호(TOTP)가 잠시 후에 만료되기 때문입니다.

**다른 IAM 사용자에 대한 가상 및 하드웨어 MFA 디바이스를 다시 동기화하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택한 다음 MFA 디바이스를 재동기화해야 할 사용자의 이름을 선택합니다.

1. **Security credentials(보안 자격 증명)** 탭을 선택합니다. **다중 인증(MFA)** 섹션에서 MFA 디바이스 옆의 라디오 버튼을 선택하고 **다시 동기화**를 선택합니다.

1. 디바이스에서 순차적으로 생성된 다음 2개의 코드를 **MFA code 1(MFA 코드 1)** 및 **MFA code 2(MFA 코드 2)**에 입력합니다. 그런 다음 **Resync**(다시 동기화)를 선택합니다.
**중요**  
코드를 생성한 후 즉시 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 요청이 처리되는 것으로 보이지만 디바이스가 동기화되지 않습니다. 이는 시간 기반 일회용 암호(TOTP)가 잠시 후에 만료되기 때문입니다.

**로그인 전에 루트 사용자 MFA를 재동기화하려면(콘솔)**

1. **인증 디바이스로 Amazon Web Services 로그인(Amazon Web Services Sign In With Authentication Device)** 페이지에서 **인증 디바이스에 문제가 있나요?(Having problems with your authentication device?)를 선택합니다. 여기를 클릭하십시오.(Click here.)**
**참고**  
**MFA를 사용하여 로그인** 및 **인증 디바이스 문제 해결**과 같은 다른 텍스트가 나타날 수 있습니다. 그러나 동일한 기능이 제공됩니다.

1. **Re-Sync With Our Servers(서버를 통한 재동기화)** 섹션에서 디바이스에서 순차적으로 생성된 다음 2개의 코드를 **MFA code 1(MFA 코드 1)** 및 **MFA code 2(MFA 코드 2)**에 입력합니다. 그런 다음 **인증 디바이스 재동기화(Re-sync authentication device)**를 선택합니다.

1. 필요할 경우 암호를 다시 입력하고 **로그인**을 선택합니다. 그런 다음 MFA 디바이스를 사용하여 로그인을 완료합니다.

**로그인 이후 루트 사용자 MFA 디바이스를 재동기화하려면(콘솔)**

1. **루트 사용자**를 선택하고 AWS 계정 계정 이메일 주소를 입력하여 [IAM 콘솔](https://console.aws.amazon.com/iam/)에 계정 소유자로 로그인합니다. 다음 페이지에서 암호를 입력합니다.
**참고**  
루트 사용자는 **IAM 사용자로 로그인** 페이지에 로그인할 수 없습니다. **IAM 사용자로 로그인** 페이지가 보이면 페이지 하단에 있는 **루트 사용자 이메일을 사용하여 로그인**을 선택합니다. 루트 사용자로 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*의 [루트 사용자로 AWS Management Console 로그인](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html)을 참조하세요.

1. 탐색 모음의 오른쪽에서 계정 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다. 필요한 경우 **Continue to Security Credentials**(보안 자격 증명으로 계속)를 선택합니다.  
![\[탐색 메뉴의 보안 자격 증명\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. 페이지의 **Multi-factor authentication (MFA)(멀티 팩터 인증(MFA))** 섹션을 확장합니다.

1. 디바이스 옆의 라디오 버튼을 선택하고 **Resync**(다시 동기화)를 선택합니다.

1. **Resync MFA device**(MFA 기기 다시 동기화) 대화 상자에서 디바이스에서 순차적으로 생성된 다음 2개의 코드를 **MFA code 1**(MFA 코드 1) 및 **MFA code 2**(MFA 코드 2)에 입력합니다. 그런 다음 **Resync**(다시 동기화)를 선택합니다.
**중요**  
코드를 생성한 후 즉시 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 MFA 디바이스가 사용자와 연결은 되지만 MFA 디바이스가 동기화되지 않습니다. 이는 시간 기반 일회용 암호(TOTP)가 잠시 후에 만료되기 때문입니다.

## 가상 및 하드웨어 MFA 디바이스 재동기화(AWS CLI)
<a name="id_credentials_mfa_sync_cli"></a>

AWS CLI에서 가상 및 하드웨어 MFA 디바이스를 재동기화할 수 있습니다.

**IAM 사용자에 대한 가상 및 하드웨어 MFA 디바이스를 재동기화하려면(AWS CLI)**  
명령 프롬프트에서 [aws iam resync-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html) 명령을 실행합니다.
+ 가상 MFA 디바이스: 디바이스의 Amazon 리소스 이름(ARN)을 일련 번호로 지정합니다.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number arn:aws:iam::123456789012:mfa/RichardsMFA --authentication-code1 123456 --authentication-code2 987654
  ```
+ 하드웨어 MFA 디바이스: 하드웨어 디바이스의 일련 번호를 일련 번호로 지정합니다. 형식은 공급업체에 따라 다릅니다. 예를 들어 Amazon에서는 gemalto 토큰을 구매할 수 있습니다. 이 토큰의 일련 번호는 일반적으로 문자 4개이며 그 뒤로 숫자 4개가 이어집니다.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number ABCD12345678 --authentication-code1 123456 --authentication-code2 987654
  ```

**중요**  
코드를 생성한 후 즉시 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 잠시 후 코드가 만료되기 때문에 요청이 실패합니다.

## 가상 및 하드웨어 MFA 디바이스 재동기화(AWS API)
<a name="id_credentials_mfa_sync_api"></a>

IAM에는 동기화를 수행하는 API 호출이 있습니다. 이러한 경우 가상 및 하드웨어 MFA 사용자에게 API 호출에 액세스할 수 있는 권한을 부여하는 것이 좋습니다. 이때 사용자가 필요할 때마다 디바이스를 재동기화할 수 있도록 API 호출 기반 도구를 구축해야 합니다.

**IAM 사용자에 대한 가상 및 하드웨어 MFA 디바이스를 재동기화하려면(AWS API)**
+ [ResyncMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html) 요청을 보냅니다.

# MFA 디바이스 비활성화
<a name="id_credentials_mfa_disable"></a>

다중 인증(MFA) 디바이스를 사용하여 IAM 사용자로 로그인하는 데 문제가 있는 경우 관리자에게 문의하여 도움을 받으세요.

관리자는 다른 IAM 사용자에 대해 디바이스를 비활성화할 수 있습니다. 이 방법을 사용하면 MFA를 사용하지 않고 로그인할 수 있습니다. MFA 디바이스가 교체되는 중이거나 디바이스가 일시적으로 사용 불가능할 때 이 방법을 임시 해결 방법으로 사용할 수 있습니다. 그러나 최대한 빨리 사용자를 위한 새 디바이스를 활성화하는 것이 좋습니다. 새 MFA 디바이스를 활성화 하는 방법에 대한 자세한 내용은 [IAM의 AWS 다중 인증](id_credentials_mfa.md)를 참조하세요.

**참고**  
API 또는 AWS CLI를 사용하여 AWS 계정에서 사용자를 삭제하는 경우 사용자의 MFA 디바이스를 비활성화 또는 삭제해야 합니다. 이 변경 사항을 사용자 제거 과정의 일부로 활용합니다. 사용자 제거에 대한 자세한 내용은 [IAM 사용자 제거 또는 비활성화](id_users_remove.md)의 내용을 참조하세요.

**Topics**
+ [MFA 디바이스 비활성화(콘솔)](#deactive-mfa-console)
+ [MFA 디바이스 비활성화(AWS CLI)](#deactivate-mfa-cli)
+ [MFA 디바이스 비활성화(AWS API)](#deactivate-mfa-api)

## MFA 디바이스 비활성화(콘솔)
<a name="deactive-mfa-console"></a><a name="deactivate-mfa-for-user"></a>

**다른 IAM 사용자에 대해 MFA 디바이스를 비활성화하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자의 MFA 디바이스를 비활성화하려면 MFA를 제거하려는 사용자의 이름을 선택합니다.

1. **Security credentials(보안 자격 증명)** 탭을 선택합니다.

1. **다중 인증(MFA)**에서 MFA 디바이스 옆의 라디오 버튼을 선택하고 **제거**를 선택하고 **제거**를 선택합니다.

   디바이스가 AWS에서 제거됩니다. 디바이스는 다시 활성화되어 AWS 사용자 또는 AWS 계정 루트 사용자에 연결될 때까지는 로그인 또는 요청 인증에 사용할 수 없습니다.<a name="deactivate-mfa-for-root"></a>

**AWS 계정 루트 사용자의 MFA 디바이스를 비활성화하려면(콘솔)**

1. **루트 사용자**를 선택하고 AWS 계정 계정 이메일 주소를 입력하여 [IAM 콘솔](https://console.aws.amazon.com/iam/)에 계정 소유자로 로그인합니다. 다음 페이지에서 암호를 입력합니다.
**참고**  
루트 사용자는 **IAM 사용자로 로그인** 페이지에 로그인할 수 없습니다. **IAM 사용자로 로그인** 페이지가 보이면 페이지 하단에 있는 **루트 사용자 이메일을 사용하여 로그인**을 선택합니다. 루트 사용자로 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*의 [루트 사용자로 AWS Management Console 로그인](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html)을 참조하세요.

1. 탐색 모음의 오른쪽에서 계정 이름을 선택한 다음 **Security credentials**(보안 자격 증명)를 선택합니다. 필요한 경우 **Continue to Security Credentials**(보안 자격 증명으로 계속)를 선택합니다.  
![\[탐색 메뉴의 보안 자격 증명\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. **Multi-factor authentication (MFA)**(다중 인증(MFA)) 섹션에서 비활성화하려는 MFA 디바이스 옆의 라디오 버튼을 선택하고 **Remove**(제거)를 선택합니다.

1. **** 제거를 선택합니다.

   AWS 계정의 MFA 디바이스가 비활성화됩니다. AWS 계정과 연결된 이메일로 Amazon Web Services의 확인 메시지가 왔는지 점검합니다. 이메일이 Amazon Web Services의 Multi-Factor Authentication(MFA)이 비활성화되었음을 알립니다. 메시지는 `@amazon.com` 또는 `@aws.amazon.com`에서 전송되어 옵니다.

**참고**  
AWS 계정에서 할당되지 않은 가상 MFA 디바이스는 로그인 프로세스 중에 또는 AWS Management Console을 통해 새 가상 MFA 디바이스를 추가할 때 삭제됩니다. 할당되지 않은 가상 MFA 디바이스는 계정의 디바이스이지만 계정 루트 사용자 또는 IAM 사용자가 로그인 프로세스에 사용하지 않습니다. 새 가상 MFA 디바이스를 계정에 추가할 수 있도록 해당 디바이스는 삭제됩니다. 또한 디바이스 이름을 재사용할 수 있습니다.

## MFA 디바이스 비활성화(AWS CLI)
<a name="deactivate-mfa-cli"></a>

**IAM 사용자에 대해 MFA 디바이스를 비활성화하려면(AWS CLI)**
+ 다음 명령을 실행합니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html) 

## MFA 디바이스 비활성화(AWS API)
<a name="deactivate-mfa-api"></a>

**IAM 사용자에 대해 MFA 디바이스를 비활성화하려면(AWS API)**
+ 다음 연산을 호출합니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) 

# IAM에서 MFA로 보호되는 ID 복구
<a name="id_credentials_mfa_lost-or-broken"></a>

[가상 MFA 디바이스](id_credentials_mfa_enable_virtual.md) 또는 [하드웨어 TOTP 토큰](id_credentials_mfa_enable_physical.md)이 정상적으로 작동하는 것처럼 같지만, 이것을 사용하여 AWS 리소스에 액세스하지 못하는 경우에는 AWS와 동기화되지 않는 것이 원인일 수 있습니다. 가상 MFA 디바이스 또는 하드웨어 MFA 디바이스의 동기화에 대한 자세한 내용은 [가상 및 하드웨어 MFA 디바이스 재동기화](id_credentials_mfa_sync.md) 섹션을 참조하세요. [FIDO 보안 키](id_credentials_mfa_enable_fido.md)는 항상 동기화되어 있습니다.

AWS 계정 루트 사용자용 [MFA 디바이스](id_credentials_mfa.md)가 분실 또는 손상되거나 작동하지 않는 경우, 계정에 대한 액세스를 복구할 수 있습니다. IAM 사용자는 관리자에게 문의하여 디바이스를 비활성화해야 합니다.

**중요**  
여러 개의 MFA 디바이스를 활성화하는 것이 좋습니다. 여러 개의 MFA 디바이스를 등록하면 디바이스의 분실 또는 고장이 발생한 경우에도 계속 액세스할 수 있습니다. AWS 계정 루트 사용자 및 IAM 사용자는 어떤 유형이든 최대 8개의 MFA 디바이스를 등록할 수 있습니다.

## 사전 조건 - 다른 MFA 디바이스 사용
<a name="mfa-lost-or-broken-prerequisites"></a>

[다중 인증(MFA) 디바이스](id_credentials_mfa.md)가 분실되었거나 손상되었거나 작동하지 않는 경우 동일한 루트 사용자 또는 IAM 사용자에게 등록된 다른 MFA 디바이스를 사용하여 로그인할 수 있습니다.

**다른 MFA 디바이스를 사용하여 로그인하는 방법**

1. AWS 계정 ID 또는 계정 별칭과 암호를 사용하여 [AWS Management Console](url-comsole-domain;iam)에 로그인합니다.

1. **추가 확인 필요** 페이지 또는 **복수 단계 인증** 페이지에서 **다른 MFA 방법 시도**를 선택합니다.

1. 선택한 MFA 디바이스 유형으로 인증합니다.

1. 다음 단계는 대체 MFA 디바이스를 사용해 성공적으로 로그인했는지 여부에 따라 달라집니다.
   + 로그인에 성공하면 [가상 및 하드웨어 MFA 디바이스 재동기화](id_credentials_mfa_sync.md)가 가능하며, 이를 통해 문제를 해결할 수 있습니다. MFA 디바이스가 분실되었거나 파손된 경우 비활성화할 수 있습니다. 모든 MFA 디바이스 유형의 비활성화에 대한 지침은 [MFA 디바이스 비활성화](id_credentials_mfa_disable.md) 섹션을 참조하세요.
   + MFA로 로그인할 수 없는 경우 [루트 사용자 MFA 디바이스 복구](#root-mfa-lost-or-broken) 또는 [IAM 사용자 MFA 디바이스 복구](#iam-user-mfa-lost-or-broken)의 단계를 사용하여 MFA로 보호된 자격 증명을 복구합니다.



## 루트 사용자 MFA 디바이스 복구
<a name="root-mfa-lost-or-broken"></a>

MFA 디바이스로 로그인할 수 없는 경우 대체 인증 방법을 통해 사용자 계정에 등록된 이메일 및 기본 연락처 전화번호로 사용자 자격 증명을 확인하여 로그인할 수 있습니다.

대체 인증 요소를 사용하여 루트 사용자로 로그인하기 전에 계정과 연결된 이메일 및 기본 연락처 전화번호에 액세스할 수 있는지 확인합니다. 기본 연락처 전화번호를 업데이트해야 하는 경우 루트 사용자 대신 **관리자 액세스 권한이 모두 있는 IAM 사용자로 로그인합니다. 계정 연락처 정보 업데이트에 대한 추가 지침은 *AWS Billing 사용설명서*의 [연락처 정보 편집](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html)을 참조하십시오. 이메일 및 기본 연락처 전화번호에 액세스할 수 없는 경우 [AWS Support](https://support.aws.amazon.com/#/contacts/aws-mfa-support)에 문의해야 합니다.

**중요**  
성공적인 계정 복구를 위해 루트 사용자에게 연결된 이메일 주소와 연락처 전화번호를 최신 상태로 유지하는 것이 좋습니다. 자세한 내용은 *AWS Account Management참조 안내서*에 있는 [AWS 계정의 기본 연락처 업데이트](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html)를 참조하세요.

**AWS 계정 루트 사용자로 다른 인증 요소를 사용하여 로그인하려면**

1.  **루트 사용자**를 선택하고 AWS 계정 이메일 주소를 입력하여 [AWS Management Console](https://console.aws.amazon.com/)에 계정 소유자로 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다.

1. **추가 확인 필요(Additional verification required)** 페이지에서 인증할 MFA 방법을 선택하고 **다음(Next)**을 선택합니다.
**참고**  
**MFA를 사용하여 로그인(Sign in using MFA)**, **인증 디바이스 문제 해결(Troubleshoot your authentication device)**, **MFA 문제 해결(Troubleshoot MFA)**과 같은 대체 텍스트가 표시될 수 있지만 기능은 동일합니다. 대체 인증 요소를 사용하여 계정 이메일 주소와 기본 연락처 전화번호를 확인할 수 없는 경우 [AWS Support](https://support.aws.amazon.com/#/contacts/aws-mfa-support)에 문의하여 MFA 디바이스를 비활성하세요.

1. 사용 중인 MFA 유형에 따라 다른 페이지가 표시되지만 **MFA 문제 해결(Troubleshoot MFA)** 옵션은 동일하게 작동합니다. **추가 확인 필요(Additional verification required)** 페이지 또는 **복수 단계 인증(Multi-factor authentication)** 페이지에서 **MFA 문제 해결(Troubleshoot MFA)**을 선택합니다.

1. 필요할 경우 암호를 다시 입력하고 ** 로그인**을 선택합니다.

1. **디바이스 인증 문제 해결(Troubleshoot your authentication device)** 페이지에 있는 **대체 인증 팩터를 사용하여 로그인(Sign In Using Alternative Factors of Authentication)** 섹션에서 **대체 팩터를 사용하여 로그인(Sign in using alternative factors)**을 선택합니다.

1. **대체 인증 팩터를 사용하여 로그인(Sign In Using Alternative Factors of Authentication)** 페이지에서 이메일 주소를 확인하여 계정을 인증하고 **확인 이메일 보내기(Send verification email)**를 선택합니다.

1. AWS 계정과 연결된 이메일에서 Amazon Web Services(recover-mfa-no-reply@verify.signin.aws)의 메시지를 확인합니다. 이메일 지침을 따릅니다.

   계정에 이메일이 없는 경우에는 스팸 폴더를 확인하거나 브라우저로 돌아가 **이메일 재전송(Resend the email)**을 선택합니다.

1. 이메일 주소를 확인한 후에 계정 인증을 계속 진행할 수 있습니다. 기본 연락처 전화번호를 확인하려면 **지금 전화하기(Call me now)**를 선택합니다.

1. AWS 전화를 받고, 요구에 따라 AWS 웹사이트의 6자리 숫자를 전화 키패드에 입력합니다.

   AWS에서 전화가 오지 않을 경우에는 **로그인**을 선택하여 콘솔에 다시 로그인하고 처음부터 다시 시작합니다. 또는 [분실하거나 사용할 수 없는 다중 인증(MFA) 디바이스](https://support.aws.amazon.com/#/contacts/aws-mfa-support)(Lost or unusable Multi-Factor Authentication (MFA) device)를 참조하여 지원팀에 문의하세요.

1. 전화 번호를 확인한 후에는 **콘솔에 로그인(Sign in to the console)**을 선택하여 계정에 로그인할 수 있습니다.

1. 다음 단계는 사용 중인 MFA의 유형에 따라 다릅니다.
   + 가상 MFA 디바이스의 경우, 디바이스에서 계정을 제거합니다. 그런 다음 [AWS 보안 자격 증명](https://console.aws.amazon.com/iam/home?#security_credential) 페이지로 이동하여 기존 MFA 가상 디바이스 엔터티를 삭제한 다음 새 엔터티를 생성합니다.
   + FIDO 보안 키의 경우, [AWS 보안 인증](https://console.aws.amazon.com/iam/home?#security_credential) 페이지로 이동하여 기존 FIDO 보안 키를 비활성화한 다음 새 키를 활성화합니다.
   + 하드웨어 TOTP 토큰의 경우, 타사 제공업체에 연락해 디바이스 수리 또는 교체를 위한 도움을 받으세요. 새 디바이스를 받기 전까지 다른 인증 요소를 사용하여 계속 로그인할 수 있습니다. 하드웨어 MFA 디바이스를 새로 받은 후에는 [AWS 보안 자격 증명](https://console.aws.amazon.com/iam/home?#security_credential) 페이지로 이동하여 기존 MFA 디바이스를 삭제합니다.
**참고**  
잃어버렸거나 도난당한 MFA 디바이스를 동일한 유형의 디바이스로 대체해야 하는 것은 아닙니다. 예를 들어, FIDO 보안 키가 망가져 새로 주문한 경우, 새로운 FIDO 보안 키를 받을 때까지는 가상 MFA 또는 하드웨어 TOTP 토큰을 사용할 수 있습니다.

**중요**  
MFA 디바이스가 분실 또는 도난된 경우 로그인하고 대체 MFA 디바이스를 설정한 후 루트 사용자 암호를 변경하세요. 인증 디바이스를 훔친 공격자가 사용자의 현재 암호를 알고 있을 수 있습니다. 자세한 내용은 [AWS 계정 루트 사용자의 암호 변경](root-user-password.md) 섹션을 참조하세요.

## IAM 사용자 MFA 디바이스 복구
<a name="iam-user-mfa-lost-or-broken"></a>

MFA로 로그인할 수 없는 IAM 사용자인 경우 직접 MFA 디바이스를 복구할 수 없습니다. 해당 사용자는 관리자에 문의하여 디바이스를 비활성화해야 합니다. 그러면 새 디바이스를 활성화할 수 있습니다.

**IAM 사용자로 MFA 디바이스에 관한 도움을 받으려면**

1. AWS 관리자나 그 밖에 IAM 사용자의 사용자 이름 및 암호를 제공한 담당자에게 문의합니다. [MFA 디바이스 비활성화](id_credentials_mfa_disable.md) 설명대로 관리자가 MFA 디바이스를 비활성화해야 로그인할 수 있습니다.

1. 다음 단계는 사용 중인 MFA의 유형에 따라 다릅니다.
   + 가상 MFA 디바이스의 경우, 디바이스에서 계정을 제거합니다. 그런 다음 [AWS Management Console에서 가상 MFA 디바이스 할당](id_credentials_mfa_enable_virtual.md) 설명대로 가상 디바이스를 활성화합니다.
   + FIDO 보안 키의 경우, 타사 공급업체에 연락해 디바이스 교체를 위한 도움을 받으세요. 새로운 FIDO 보안 키를 받은 경우, [AWS Management Console에서 패스키 또는 보안 키 할당](id_credentials_mfa_enable_fido.md)에 설명된 대로 활성화합니다.
   + 하드웨어 TOTP 토큰의 경우, 타사 제공업체에 연락해 디바이스 수리 또는 교체를 위한 도움을 받으세요. 물리적 MFA 디바이스를 새로 받은 후에는 [AWS Management Console에서 하드웨어 TOTP 토큰 할당](id_credentials_mfa_enable_physical.md) 설명대로 디바이스를 활성화합니다.
**참고**  
잃어버렸거나 도난당한 MFA 디바이스를 동일한 유형의 디바이스로 대체해야 하는 것은 아닙니다. 어떤 조합이든 최대 8개의 MFA 디바이스를 보유할 수 있습니다. 예를 들어, FIDO 보안 키가 망가져 새로 주문한 경우, 새로운 FIDO 보안 키를 받을 때까지는 가상 MFA 또는 하드웨어 TOTP 토큰을 사용할 수 있습니다.

1. MFA 디바이스가 없거나 도난당한 경우에는 인증 디바이스를 훔친 공격자가 현재 암호를 알 수 있으므로 비밀번호도 변경하세요. 자세한 내용은 [IAM 사용자 암호 관리](id_credentials_passwords_admin-change-user.md) 섹션을 참조하세요.

# MFA를 통한 보안 API 액세스
<a name="id_credentials_mfa_configure-api-require"></a>

사용자가 호출할 수 있는 API 작업을 IAM 정책을 사용해 지정할 수 있습니다. 민감한 작업을 수행할 수 있도록 허용하기 전에 사용자가 다중 인증(MFA)으로 인증하도록 요구하는 추가 보안이 필요할 수 있습니다.

예를 들어 사용자가 Amazon EC2 `RunInstances`, `DescribeInstances` 및 `StopInstances` 작업을 수행하도록 허용하는 정책이 있을 수 있습니다. 하지만 `TerminateInstances`처럼 안전하지 않은 작업의 경우 이를 제한해 사용자가 AWS MFA 디바이스에서 인증할 때만 작업을 수행하도록 해야 할 필요가 있을 수 있습니다.

**Topics**
+ [개요](#MFAProtectedAPI-overview)
+ [시나리오: 크로스 계정 위임에 대한 MFA 보호](#MFAProtectedAPI-cross-account-delegation)
+ [시나리오: 현재 계정의 API 작업에 대한 액세스를 위한 MFA 보호](#MFAProtectedAPI-user-mfa)
+ [시나리오: 리소스 기반 정책이 있는 리소스에 대한 MFA 보호](#MFAProtectedAPI-resource-policies)

## 개요
<a name="MFAProtectedAPI-overview"></a>

API 작업에 MFA 보호를 추가하려면 다음과 같은 작업이 필요합니다.

1. 관리자는 MFA 인증이 필요한 API 요청을 해야 하는 각 사용자에 대해 AWS MFA 디바이스를 구성합니다. 자세한 내용은 [IAM의 AWS 다중 인증](id_credentials_mfa.md) 섹션을 참조하세요.

1. 관리자는 사용자가 AWS MFA 디바이스로 인증했는지 여부를 확인하는 `Condition` 요소가 포함된 사용자 정책을 생성합니다.

1. 사용자는 MFA 파라미터를 지원하는 AWS STS API 작업인 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 또는 [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) 중 하나를 호출합니다. 사용자는 사용자와 연결된 디바이스의 디바이스 식별자를 호출에 포함시킵니다. 또한 사용자는 디바이스에 생성하는 시간 기반 일회용 암호(TOTP)도 포함시킵니다. 각각의 경우, 사용자는 AWS에 추가 요청하는 데 사용하기 위해 임시 보안 자격 증명을 다시 가져옵니다.
**참고**  
서비스의 API 작업에 대한 MFA 보호 기능은 해당 서비스에서 임시 보안 자격 증명을 지원하는 경우에만 사용 가능합니다. 이러한 서비스 목록은 [임시 보안 자격 증명을 사용하여 AWS에 액세스](https://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html)를 참조하세요.

권한 부여에 실패한 경우 AWS는 "액세스가 거부되었습니다."라는 오류 메시지를 반환합니다(무단 액세스의 경우와 동일). MFA 보호 API 정책이 적용되는 경우, 사용자가 유효한 MFA 인증 없이 API 작업을 호출하려 하면 AWS에서는 정책에 지정된 API 작업에 대한 액세스를 거부합니다. API 작업 요청의 타임스탬프가 정책에 지정된 허용 범위를 벗어난 경우에도 작업이 거부됩니다. 사용자는 MFA 코드와 디바이스 일련 번호로 새 임시 보안 자격 증명을 요청하여 MFA 인증을 다시 해야 합니다.

### MFA 조건이 포함된 IAM 정책
<a name="MFAProtectedAPI-policies"></a>

MFA 조건이 포함된 정책은 다음에 연결할 수 있습니다.
+ IAM 사용자 또는 그룹
+ Amazon S3 버킷, Amazon SQS 대기열, Amazon SNS 주제 등과 같은 리소스
+ 사용자가 수임할 수 있는 IAM 역할의 신뢰 정책

정책의 MFA 조건을 사용해 다음과 같은 속성을 확인할 수 있습니다.
+ 존재 - 사용자가 MFA로 인증했는지 간단히 확인하려면 `Bool` 조건에서 `aws:MultiFactorAuthPresent` 키가 `True`인지 확인합니다. 사용자가 단기 자격 증명으로 인증하는 경우에만 키가 있습니다. 액세스 키와 같은 장기 자격 증명에는 이 키가 포함되어 있지 않습니다.
+ 기간 - MFA 인증 이후 지정된 시간 내에서만 액세스 권한을 부여하고 싶은 경우, 숫자 조건 유형을 사용하여 `aws:MultiFactorAuthAge` 키의 기간과 값(예: 3600초)을 비교합니다. MFA가 사용되지 않는 경우 `aws:MultiFactorAuthAge` 키가 없습니다.

다음 예는 MFA 인증의 존재를 테스트하는 MFA 조건을 포함하는 IAM 역할의 신뢰 정책을 보여줍니다. 이 정책을 통해 `Principal` 요소(`ACCOUNT-B-ID`를 유효한 AWS 계정 ID로 대체)에 지정된 AWS 계정의 사용자는 이 정책이 연결된 역할을 수임할 수 있습니다. 그러나 이러한 사용자는 MFA를 사용하여 인증을 받은 경우에만 역할을 수임할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "ACCOUNT-B-ID"},
    "Action": "sts:AssumeRole",
    "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
  }
}
```

------

MFA의 조건 유형에 대한 자세한 내용은 [AWS 글로벌 조건 컨텍스트 키](reference_policies_condition-keys.md), [숫자 조건 연산자](reference_policies_elements_condition_operators.md#Conditions_Numeric) 및 [조건 키의 존재를 확인하는 조건 연산자](reference_policies_elements_condition_operators.md#Conditions_Null) 섹션을 참조하세요.

### GetSessionToken과 AssumeRole 중에서 선택
<a name="scenarios"></a>

AWS STS에서는 사용자가 MFA 정보를 전달할 수 있도록 `GetSessionToken`과 `AssumeRole`이라는 두 가지 API 작업을 제공합니다. 사용자가 임시 보안 자격 증명을 가져오기 위해 호출하는 API 작업은 다음 시나리오 중 어떤 것이 적용되느냐에 따라 달라집니다.

**다음 시나리오에는 `GetSessionToken`을 사용합니다.**
+ 요청을 수행하는 IAM 사용자와 동일한 AWS 계정의 리소스에 액세스하는 API 작업을 호출합니다. `GetSessionToken` 요청의 임시 자격 증명은 작업 증명 요청에 MFA 정보를 포함하는 경우에*만* IAM 및 AWS STS API 작업에 액세스할 수 있습니다. `GetSessionToken`에서 반환하는 임시 자격 증명에 MFA 정보가 포함되어 있으므로 자격 증명에서 수행하는 개별 API 작업에서 MFA를 확인할 수 있습니다.
+ MFA 조건이 포함된 리소스 기반 정책으로 보호되는 리소스에 액세스.

`GetSessionToken` 작업의 목적은 MFA를 사용하는 사용자를 인증하는 것입니다. 정책을 사용하여 인증 작업을 제어할 수는 없습니다.

**다음 시나리오에는 `AssumeRole`을 사용합니다.**
+ 같은 또는 다른 AWS 계정의 리소스에 액세스하는 API 작업을 호출합니다. API 호출은 모든 IAM 또는 AWS STS API를 포함할 수 있습니다. 액세스를 보호하기 위해 사용자가 역할을 수임하는 시각에 MFA를 적용한다는 것에 유의하세요. `AssumeRole`에서 반환하는 임시 자격 증명은 컨텍스트에 MFA 정보를 포함하고 있지 않으므로 MFA에 대한 개별 API 작업을 확인할 수 없습니다. 이것이 바로 `GetSessionToken`을 사용해 리소스 기반 정책에 의해 보호되는 리소스에 대한 액세스를 제한해야 하는 이유입니다.

**참고**  
IAM 사용자가 MFA로 로그인할 때 AWS CloudTrail 로그에 MFA 정보가 포함됩니다. IAM 사용자가 IAM 역할을 수임하는 경우 CloudTrail은 수임된 역할을 사용하여 수행된 작업에 대한 `sessionContext` 속성에서도 `mfaAuthenticated: true`를 기록합니다. 그러나 CloudTrail 로깅은 수임된 역할의 자격 증명으로 API를 직접 호출할 때 IAM에 필요한 것과는 별개입니다. 자세한 내용은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)을 참조하세요.

이러한 시나리오가 구현되는 방식에 대한 세부 정보는 이 문서의 후반부에 나와 있습니다.

### MFA 보호 API 액세스에 대한 중요 사항
<a name="MFAProtectedAPI-important-points"></a>

API 작업에 대한 MFA 보호가 지닌 다음과 같은 측면을 이해하는 것이 중요합니다.
+ MFA 보호는 임시 보안 자격 증명을 사용하는 경우에만 제공되며, 임시 보안 자격 증명은 `AssumeRole` 또는 `GetSessionToken`을 사용해 얻어야 합니다.
+ AWS 계정 루트 사용자 자격 증명으로는 MFA 보호 API 액세스를 사용할 수 없습니다.
+ U2F 보안 키로는 MFA 보호 API 액세스를 사용할 수 없습니다.
+ 페더레이션 사용자는 AWS 서비스에 사용할 MFA 디바이스를 할당받을 수 없으므로, MFA에서 제어하는 AWS 리소스에 액세스할 수 없습니다. (다음 참조.) 
+ 임시 자격 증명을 반환하는 다른 AWS STS API 작업에서는 MFA를 지원하지 않습니다. `AssumeRoleWithWebIdentity` 및 `AssumeRoleWithSAML`의 경우 사용자는 외부 공급자에 의해 인증되며 AWS에서는 그 공급자가 MFA를 요구했는지를 확인할 수 없습니다. `GetFederationToken`의 경우 MFA가 특정 사용자와 반드시 연결되는 것은 아닙니다.
+ 이와 마찬가지로 장기 자격 증명(IAM 사용자 액세스 키 및 루트 사용자 액세스 키)은 만료되지 않기 때문에 MFA 보호 API 액세스를 통해 사용할 수 없습니다.
+ 또한, `AssumeRole` 및 `GetSessionToken`은 MFA 정보 없이도 호출할 수 있습니다. 이 경우 호출자는 임시 보안 자격 증명을 다시 가져오지만, 그러한 임시 자격 증명의 세션 정보에는 사용자가 MFA로 인증했는지 나타나지 않습니다.
+ API 작업에 대해 MFA 보호를 설정하려면 정책에 MFA 조건을 추가하면 됩니다. MFA 사용을 적용하기 위해 정책에는 `aws:MultiFactorAuthPresent` 조건 키가 포함되어 있어야 합니다. 크로스 계정 위임을 위해 역할의 신뢰 정책에는 조건 키가 포함되어 있어야 합니다.
+ 다른 AWS 계정이 내 계정의 리소스에 액세스하도록 허용하는 경우, 리소스의 보안은 신뢰할 수 있는 계정, 즉 다른 계정(내 계정이 아님)의 구성에 따라 달라집니다. 이것은 멀티 팩터 인증이 필요할 때도 마찬가지입니다. 가상 MFA 디바이스를 생성할 권한이 있는 신뢰할 수 있는 계정 내의 어떤 자격 증명도 MFA 클레임을 생성하여 역할의 신뢰 정책의 해당 부분을 충족할 수 있습니다. 멀티 팩터 인증을 요구하는 AWS 리소스에 대한 액세스를 다른 계정의 멤버에게 허용하기 전에 신뢰할 수 있는 계정의 소유자가 보안 모범 사례를 따르도록 해야 합니다. 예를 들어 신뢰할 수 있는 계정에서는 MFA 디바이스 관리 API 작업과 같은 중요 API 작업에 대한 액세스를 신뢰할 수 있는 특정 자격 증명으로 제한해야 합니다.
+ 정책에 MFA 조건이 포함된 경우, 사용자가 MFA에 인증되지 않거나 잘못된 MFA 디바이스 식별자 또는 잘못된 TOTP를 제공하는 경우 요청이 거부됩니다.

## 시나리오: 크로스 계정 위임에 대한 MFA 보호
<a name="MFAProtectedAPI-cross-account-delegation"></a>

이 시나리오에서는 다른 계정의 IAM 사용자에게 액세스 권한을 위임하려고 합니다. 단 해당 사용자가 AWS MFA 디바이스로 인증된 경우에 한합니다. 교차 계정 위임에 대한 자세한 내용은 [역할 용어 및 개념](id_roles.md#id_roles_terms-and-concepts) 섹션을 참조하세요.

계정 A(액세스할 리소스를 소유한 신뢰하는 계정)에 관리자 권한이 있는 IAM 사용자 Anaya가 있다고 가정해 봅시다. 그녀는 계정 B(신뢰할 수 있는 계정)의 사용자 Richard에게 액세스 권한을 부여하고 싶지만, Richard가 MFA에 인증되었는지 확인한 후에 그가 역할을 수임하기를 원합니다.

1. 신뢰하는 계정 A에서 Anaya는 `CrossAccountRole`이라는 IAM 역할을 생성하고 해당 역할의 신뢰 정책에서 보안 주체를 계정 B의 계정 ID로 설정합니다. 이 신뢰 정책은 AWS STS `AssumeRole` 작업에 대한 권한을 부여합니다. 또한 Anaya는 다음 예와 같이 신뢰 정책에 MFA 조건을 추가합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {"AWS": "ACCOUNT-B-ID"},
       "Action": "sts:AssumeRole",
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }
   }
   ```

------

1. Anaya는 역할이 수행할 수 있는 작업을 지정하는 역할에 권한 정책을 추가합니다. MFA 보호 기능이 포함된 역할의 권한 정책은 다른 역할 권한 정책과 다르지 않습니다. 다음 예제에서는 Anaya가 역할에 추가하는 정책을 보여줍니다. 역할을 수임한 사용자는 이 정책을 통해 계정 A의 `Books` 테이블에서 Amazon DynamoDB 작업을 수행할 수 있고, 아울러 콘솔에서 작업을 수행할 때 필요한 `dynamodb:ListTables` 작업을 할 수 있습니다.
**참고**  
권한 정책은 MFA 조건을 포함하지 않습니다. MFA 인증은 사용자가 역할을 수임할 수 있는지 여부를 결정하는 데에만 사용된다는 점을 알아두세요. 사용자가 역할을 수임하면 MFA 검사가 추가로 수행되지 않습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "TableActions",
               "Effect": "Allow",
               "Action": "dynamodb:*",
               "Resource": "arn:aws:dynamodb:*:111122223333:table/Books"
           },
           {
               "Sid": "ListTables",
               "Effect": "Allow",
               "Action": "dynamodb:ListTables",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 신뢰할 수 있는 계정 B에서 관리자는 IAM 사용자 Richard가 AWS MFA 디바이스로 구성되었는지, 그리고 그가 이 디바이스의 ID를 알고 있는지 확인합니다. 디바이스 ID란 하드웨어 MFA 디바이스의 경우 일련 번호이며, 가상 MFA 디바이스의 경우 해당 디바이스의 ARN입니다.

1. 계정 B에서 관리자는 사용자 Richard(또는 그가 소속된 그룹)에게 `AssumeRole` 작업을 호출할 수 있도록 허용하는 다음과 같은 정책을 연결합니다. 리소스는 Anaya가 1단계에서 생성한 역할의 ARN으로 설정됩니다. 이 정책에는 MFA 조건이 포함되어 있지 않습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/CrossAccountRole"
               ]
           }
       ]
   }
   ```

------

1. 계정 B에서 Richard(또는 Richard가 실행하는 애플리케이션)는 `AssumeRole`을 호출합니다. API 호출에는 위임할 역할의 ARN(`arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole`), MFA 디바이스의 ID 및 Richard가 자신의 디바이스에서 가져오는 현재 TOTP가 포함되어 있습니다.

   Richard가 `AssumeRole`을 호출하면, AWS에서 그가 MFA에 대한 요건을 포함해 유효한 자격 증명을 갖고 있는지 여부를 확인합니다. 만일 Richard가 유효한 자격 증명을 갖고 있다면 성공적으로 역할을 수임해 역할의 임시 자격 증명을 사용함과 동시에 계정 A에서 `Books`라는 테이블에 대해 어떤 DynamoDB 작업도 수행할 수 있습니다.

   `AssumeRole`을 호출하는 프로그램의 예는 [MFA 인증이 포함된 AssumeRole 호출](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-assumerole) 섹션을 참조하세요.

## 시나리오: 현재 계정의 API 작업에 대한 액세스를 위한 MFA 보호
<a name="MFAProtectedAPI-user-mfa"></a>

이 시나리오에서는 AWS 계정의 사용자가 AWS MFA 디바이스를 사용해 인증받은 경우에만 중요한 API 작업에 액세스할 수 있는지 확인해야 합니다.

계정 A에 EC2 인스턴스로 작업해야 하는 개발자 그룹이 있다고 가정해 봅시다. 일반적인 개발자들은 이 인스턴스를 사용할 수 있지만, `ec2:StopInstances` 또는 `ec2:TerminateInstances` 작업에 대한 권한은 없습니다. 그와 같은 "안전하지 않은" 권한이 있는 작업을 일부 신뢰할 수 있는 사용자만 액세스할 수 있게 제한하고자 하여, 이러한 민감한 Amazon EC2 작업을 허용하는 정책에 MFA 보호를 추가합니다.

이 시나리오에서 신뢰할 수 있는 사용자 중 한 명은 사용자 Sofía입니다. 사용자 Anaya는 계정 A의 관리자입니다.

1. Anaya는 Sofia가 AWS MFA 디바이스로 구성되었는지, 그리고 Sofia가 이 디바이스의 ID를 알고 있는지 확인합니다. 디바이스 ID란 하드웨어 MFA 디바이스의 경우 일련 번호이며, 가상 MFA 디바이스의 경우 해당 디바이스의 ARN입니다.

1. Anaya는 `EC2-Admins`라는 그룹을 생성하고 이 그룹에 사용자 Sofía를 추가합니다.

1. Anaya는 `EC2-Admins` 그룹에 다음과 같은 정책을 연결합니다. 이 정책은 사용자에게 Amazon EC2 `StopInstances` 및 `TerminateInstances` 작업을 호출할 권한을 부여하는데, 단 이 사용자가 MFA를 사용하여 인증되었을 경우에 한합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": [
         "ec2:StopInstances",
         "ec2:TerminateInstances"
       ],
       "Resource": ["*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------

1. 
**참고**  
이 정책의 효력이 발생하려면 사용자는 먼저 로그아웃한 한 후 다시 로그인해야 합니다.

   사용자 Sofía가 Amazon EC2 인스턴스를 중지하거나 종료해야 하는 경우, Sofia(또는 Sofia가 실행하는 애플리케이션)는 `GetSessionToken`을 호출합니다. 이 API 작업에서는 MFA 디바이스의 ID와 Sofia가 자신의 디바이스에서 가져오는 현재 TOTP를 전달합니다.

1. 사용자 Sofía(또는 Sofía가 사용하는 애플리케이션)는 `GetSessionToken`에서 제공하는 임시 자격 증명을 사용하여 Amazon EC2 `StopInstances` 또는 `TerminateInstances` 작업을 호출합니다.

   `GetSessionToken`을 호출하는 프로그램의 예는 이 문서의 후반부에 있는 [MFA 인증이 포함된 GetSessionToken 호출](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken) 섹션을 참조하세요.

## 시나리오: 리소스 기반 정책이 있는 리소스에 대한 MFA 보호
<a name="MFAProtectedAPI-resource-policies"></a>

이 시나리오에서는 S3 버킷, SQS 대기열 또는 SNS 주제의 소유자입니다. 리소스에 액세스하는 모든 AWS 계정 사용자가 AWS MFA 디바이스로 인증되었는지 확인하려고 합니다.

이 시나리오는 사용자가 역할을 먼저 수임하지 않고도 크로스 계정 MFA 보호를 제공하는 방법을 설명합니다. 이 경우 사용자는 세 가지 조건이 충족되면 리소스에 액세스할 수 있습니다. 즉 사용자는 MFA로 인증을 받아야 하고, `GetSessionToken`에서 임시 보안 자격 증명을 가져올 수 있어야 하며, 리소스의 정책에서 신뢰하는 계정에 로그인해 있어야 합니다.

계정 A에 속해 있고 S3 버킷을 생성한다고 가정해 봅시다. 여러 AWS 계정에 속한 사용자에게 이 버킷에 대한 액세스를 부여하되, 사용자가 MFA로 인증한 경우에 한하고자 합니다.

이 시나리오에서 사용자 Anaya는 계정 A의 관리자입니다. 사용자 Nikhil은 계정 C의 IAM 사용자입니다.

1. 계정 A에서 Anaya는 `Account-A-bucket`이라는 버킷을 생성합니다.

1. Anaya는 이 버킷에 버킷 정책을 추가합니다. 이 정책은 계정 A, 계정 B 또는 계정 C의 모든 사용자가 이 버킷에서 Amazon S3 `PutObject` 및 `DeleteObject` 작업을 수행하도록 허용합니다. 이 정책에는 MFA 조건이 포함되어 있습니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"AWS": [
         "ACCOUNT-A-ID",
         "ACCOUNT-B-ID",
         "ACCOUNT-C-ID"
       ]},
       "Action": [
         "s3:PutObject",
         "s3:DeleteObject"
       ],
       "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------
**참고**  
Amazon S3는 *루트* 계정 액세스에 대해(서만) MFA Delete 기능을 제공합니다. 버킷의 버전 관리 상태를 설정할 때 Amazon S3 MFA Delete를 활성화할 수 있습니다. Amazon S3 MFA Delete는 IAM 사용자에 적용할 수 없으며 MFA 보호 API 액세스와 별개로 관리됩니다. 버킷을 삭제할 권한이 있는 IAM 사용자도 Amazon S3 MFA Delete가 활성화된 버킷은 삭제할 수 없습니다. Amazon S3 MFA Delete에 대한 자세한 내용은 [MFA Delete](https://docs.aws.amazon.com/AmazonS3/latest/dev/MultiFactorAuthenticationDelete.html)를 참조하세요.

1. 계정 C에서 관리자는 사용자 Nikhil이 AWS MFA 디바이스로 구성되어 있고 해당 디바이스의 ID를 알고 있는지 확인합니다. 디바이스 ID란 하드웨어 MFA 디바이스의 경우 일련 번호이며, 가상 MFA 디바이스의 경우 해당 디바이스의 ARN입니다.

1. 계정 C에서 Nikhil(또는 그가 실행하는 애플리케이션)은 `GetSessionToken`을 호출합니다. 이 호출에는 MFA 디바이스의 ID 또는 ARN과 Nikhil이 자신의 디바이스에서 가져오는 현재 TOTP가 포함되어 있습니다.

1. Nikhil(또는 그가 사용하는 애플리케이션)은 `GetSessionToken`에서 반환하는 임시 자격 증명을 사용하여 `Account-A-bucket`으로 파일을 업로드하는 Amazon S3 `PutObject` 작업을 호출합니다.

   `GetSessionToken`을 호출하는 프로그램의 예는 이 문서의 후반부에 있는 [MFA 인증이 포함된 GetSessionToken 호출](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken) 섹션을 참조하세요.
**참고**  
`AssumeRole`이 반환하는 임시 자격 증명은 이 경우에는 유효하지 않습니다. 사용자는 역할 수임을 위해 MFA 정보를 제공할 수 있지만 `AssumeRole`에서 반환하는 임시 자격 증명에는 MFA 정보가 포함되어 있지 않습니다. 이 정보는 정책의 MFA 조건을 충족하기 위해 필요합니다.

# 샘플 코드: 멀티 팩터 인증이 포함된 자격 증명 요청
<a name="id_credentials_mfa_sample-code"></a>

다음 예에서는 `GetSessionToken` 및 `AssumeRole` 작업을 호출하고 MFA 인증 파라미터를 전달하는 방법을 보여줍니다. 권한이 없어도 `GetSessionToken`을 호출할 수 있지만, `AssumeRole`을 호출할 수 있게 허용하는 정책이 있어야 합니다. 반환된 자격 증명은 계정 내 모든 S3 버킷의 목록을 나열하는 데 사용됩니다.

## MFA 인증이 포함된 GetSessionToken 호출
<a name="MFAProtectedAPI-example-getsessiontoken"></a>

다음 예는 `GetSessionToken`을 호출하고 MFA 인증 정보를 전달하는 방법을 보여 줍니다. `GetSessionToken` 작업에서 반환하는 임시 보안 자격 증명은 이어서 계정 내 모든 S3 버킷의 목록을 나열하는 데 사용됩니다.

이 코드를 실행하는 사용자(또는 사용자가 속한 그룹)에게 연결된 정책에서는 반환된 임시 자격 증명에 대한 권한을 제공합니다. 이 코드 예의 경우 정책에서 사용자에게 Amazon S3 `ListBuckets` 작업을 요청할 수 있는 권한을 부여해야 합니다.

다음 코드 예시는 `GetSessionToken`의 사용 방법을 보여 줍니다.

------
#### [ CLI ]

**AWS CLI**  
**IAM ID용 단기 자격 증명 세트 가져오기**  
다음 `get-session-token` 명령은 직접 호출을 위한 IAM ID용 단기 자격 증명 세트를 가져옵니다. 정책에 따라 다중 인증(MFA)이 필요한 경우 요청에 이 자격 증명을 사용할 수 있습니다. 자격 증명은 생성 후 15분 뒤에 만료됩니다.  

```
aws sts get-session-token \
    --duration-seconds 900 \
    --serial-number "YourMFADeviceSerialNumber" \
    --token-code 123456
```
출력:  

```
{
    "Credentials": {
        "AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE",
        "Expiration": "2020-05-19T18:06:10+00:00"
    }
}
```
자세한 내용은 *AWS IAM 사용자 안내서*의 [임시 보안 자격 증명 요청](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GetSessionToken](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-session-token.html)을 참조하세요.

------
#### [ PowerShell ]

**Tools for PowerShell V4**  
**예제 1: 설정된 기간 동안 유효한 임시 자격 증명이 포함된 `Amazon.RuntimeAWSCredentials` 인스턴스를 반환합니다. 임시 자격 증명을 요청하는 데 사용되는 자격 증명은 현재 쉘 기본값에서 유추됩니다. 다른 자격 증명을 지정하려면 -ProfileName 또는 -AccessKey/-SecretKey 파라미터를 사용합니다.**  

```
Get-STSSessionToken
```
**출력:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**예제 2: 1시간 동안 유효한 임시 자격 증명이 포함된 `Amazon.RuntimeAWSCredentials` 인스턴스를 반환합니다. 요청에 사용되는 자격 증명은 지정된 프로파일에서 가져옵니다.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**출력:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**예제 3: 프로파일 'myprofilename'에 자격 증명이 지정된 계정과 연결된 MFA 디바이스의 식별 번호와 디바이스에서 제공한 값을 사용하여 1시간 동안 유효한 임시 자격 증명이 들어 있는 `Amazon.RuntimeAWSCredentials` 인스턴스를 반환합니다.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**출력:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  API 세부 정보는 **AWS Tools for PowerShell Cmdlet 참조(V4)의 [GetSessionToken](https://docs.aws.amazon.com/powershell/v4/reference)을 참조하세요.

**Tools for PowerShell V5**  
**예제 1: 설정된 기간 동안 유효한 임시 자격 증명이 포함된 `Amazon.RuntimeAWSCredentials` 인스턴스를 반환합니다. 임시 자격 증명을 요청하는 데 사용되는 자격 증명은 현재 쉘 기본값에서 유추됩니다. 다른 자격 증명을 지정하려면 -ProfileName 또는 -AccessKey/-SecretKey 파라미터를 사용합니다.**  

```
Get-STSSessionToken
```
**출력:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**예제 2: 1시간 동안 유효한 임시 자격 증명이 포함된 `Amazon.RuntimeAWSCredentials` 인스턴스를 반환합니다. 요청에 사용되는 자격 증명은 지정된 프로파일에서 가져옵니다.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**출력:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**예제 3: 프로파일 'myprofilename'에 자격 증명이 지정된 계정과 연결된 MFA 디바이스의 식별 번호와 디바이스에서 제공한 값을 사용하여 1시간 동안 유효한 임시 자격 증명이 들어 있는 `Amazon.RuntimeAWSCredentials` 인스턴스를 반환합니다.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**출력:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  API 세부 정보는 *AWS Tools for PowerShell Cmdlet 참조(V5)*의 [GetSessionToken](https://docs.aws.amazon.com/powershell/v5/reference)을 참조하세요.

------
#### [ Python ]

**SDK for Python(Boto3)**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.
MFA 토큰을 전달하여 세션 토큰을 가져와 계정에 대한 Amazon S3 버킷을 나열하는 데 사용합니다.  

```
def list_buckets_with_session_token_with_mfa(mfa_serial_number, mfa_totp, sts_client):
    """
    Gets a session token with MFA credentials and uses the temporary session
    credentials to list Amazon S3 buckets.

    Requires an MFA device serial number and token.

    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an Amazon Resource Name (ARN).
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    if mfa_serial_number is not None:
        response = sts_client.get_session_token(
            SerialNumber=mfa_serial_number, TokenCode=mfa_totp
        )
    else:
        response = sts_client.get_session_token()
    temp_credentials = response["Credentials"]

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Buckets for the account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  API 세부 정보는 *AWS SDK for Python (Boto3) API 참조*의 [GetSessionToken](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/GetSessionToken)를 참조하세요.

------

## MFA 인증이 포함된 AssumeRole 호출
<a name="MFAProtectedAPI-example-assumerole"></a>

다음 예는 `AssumeRole`을(를) 호출하고 MFA 인증 정보를 전달하는 방법을 보여줍니다. `AssumeRole`에서 반환한 임시 보안 자격 증명은 계정의 모든 Amazon S3 버킷을 나열하는 데 사용됩니다.

이 시나리오에 대한 자세한 내용은 [시나리오: 크로스 계정 위임에 대한 MFA 보호](id_credentials_mfa_configure-api-require.md#MFAProtectedAPI-cross-account-delegation)를 참조하세요.

다음 코드 예시는 `AssumeRole`의 사용 방법을 보여 줍니다.

------
#### [ .NET ]

**SDK for .NET**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/STS#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
using System;
using System.Threading.Tasks;
using Amazon;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace AssumeRoleExample
{
    class AssumeRole
    {
        /// <summary>
        /// This example shows how to use the AWS Security Token
        /// Service (AWS STS) to assume an IAM role.
        ///
        /// NOTE: It is important that the role that will be assumed has a
        /// trust relationship with the account that will assume the role.
        ///
        /// Before you run the example, you need to create the role you want to
        /// assume and have it trust the IAM account that will assume that role.
        ///
        /// See https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html
        /// for help in working with roles.
        /// </summary>

        // A region property may be used if the profile or credentials loaded do not specify a region,
        // or to use a specific region.
        private static readonly RegionEndpoint REGION = RegionEndpoint.USWest2;

        static async Task Main()
        {
            // Create the SecurityToken client and then display the identity of the
            // default user.
            var roleArnToAssume = "arn:aws:iam::123456789012:role/testAssumeRole";

            var client = new Amazon.SecurityToken.AmazonSecurityTokenServiceClient(REGION);

            // Get and display the information about the identity of the default user.
            var callerIdRequest = new GetCallerIdentityRequest();
            var caller = await client.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"Original Caller: {caller.Arn}");

            // Create the request to use with the AssumeRoleAsync call.
            var assumeRoleReq = new AssumeRoleRequest()
            {
                DurationSeconds = 1600,
                RoleSessionName = "Session1",
                RoleArn = roleArnToAssume
            };

            var assumeRoleRes = await client.AssumeRoleAsync(assumeRoleReq);

            // Now create a new client based on the credentials of the caller assuming the role.
            var client2 = new AmazonSecurityTokenServiceClient(credentials: assumeRoleRes.Credentials, REGION);

            // Get and display information about the caller that has assumed the defined role.
            var caller2 = await client2.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"AssumedRole Caller: {caller2.Arn}");
        }
    }
}
```
+  API 세부 정보는 *AWS SDK for .NET API 참조*의 [AssumeRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/sts-2011-06-15/AssumeRole)을 참조하십시오.

------
#### [ Bash ]

**Bash 스크립트와 함께 AWS CLI사용**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
###############################################################################
# function iecho
#
# This function enables the script to display the specified text only if
# the global variable $VERBOSE is set to true.
###############################################################################
function iecho() {
  if [[ $VERBOSE == true ]]; then
    echo "$@"
  fi
}

###############################################################################
# function errecho
#
# This function outputs everything sent to it to STDERR (standard error output).
###############################################################################
function errecho() {
  printf "%s\n" "$*" 1>&2
}

###############################################################################
# function sts_assume_role
#
# This function assumes a role in the AWS account and returns the temporary
#  credentials.
#
# Parameters:
#       -n role_session_name -- The name of the session.
#       -r role_arn -- The ARN of the role to assume.
#
# Returns:
#       [access_key_id, secret_access_key, session_token]
#     And:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function sts_assume_role() {
  local role_session_name role_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function sts_assume_role"
    echo "Assumes a role in the AWS account and returns the temporary credentials:"
    echo "  -n role_session_name -- The name of the session."
    echo "  -r role_arn -- The ARN of the role to assume."
    echo ""
  }

  while getopts n:r:h option; do
    case "${option}" in
      n) role_session_name=${OPTARG} ;;
      r) role_arn=${OPTARG} ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done

  response=$(aws sts assume-role \
    --role-session-name "$role_session_name" \
    --role-arn "$role_arn" \
    --output text \
    --query "Credentials.[AccessKeyId, SecretAccessKey, SessionToken]")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}
```
+  API 세부 정보는 *AWS CLI명령 참조*의 [AssumeRole](https://docs.aws.amazon.com/goto/aws-cli/sts-2011-06-15/AssumeRole)을 참조하십시오.

------
#### [ C\$1\$1 ]

**SDK for C\$1\$1**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sts#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
bool AwsDoc::STS::assumeRole(const Aws::String &roleArn,
                             const Aws::String &roleSessionName,
                             const Aws::String &externalId,
                             Aws::Auth::AWSCredentials &credentials,
                             const Aws::Client::ClientConfiguration &clientConfig) {
    Aws::STS::STSClient sts(clientConfig);
    Aws::STS::Model::AssumeRoleRequest sts_req;

    sts_req.SetRoleArn(roleArn);
    sts_req.SetRoleSessionName(roleSessionName);
    sts_req.SetExternalId(externalId);

    const Aws::STS::Model::AssumeRoleOutcome outcome = sts.AssumeRole(sts_req);

    if (!outcome.IsSuccess()) {
        std::cerr << "Error assuming IAM role. " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
    else {
        std::cout << "Credentials successfully retrieved." << std::endl;
        const Aws::STS::Model::AssumeRoleResult result = outcome.GetResult();
        const Aws::STS::Model::Credentials &temp_credentials = result.GetCredentials();

        // Store temporary credentials in return argument.
        // Note: The credentials object returned by assumeRole differs
        // from the AWSCredentials object used in most situations.
        credentials.SetAWSAccessKeyId(temp_credentials.GetAccessKeyId());
        credentials.SetAWSSecretKey(temp_credentials.GetSecretAccessKey());
        credentials.SetSessionToken(temp_credentials.GetSessionToken());
    }

    return outcome.IsSuccess();
}
```
+  API 세부 정보는 *AWS SDK for C\$1\$1 API 참조*의 [AssumeRole](https://docs.aws.amazon.com/goto/SdkForCpp/sts-2011-06-15/AssumeRole)을 참조하세요.

------
#### [ CLI ]

**AWS CLI**  
**역할 수임**  
다음 `assume-role` 명령은 IAM 역할 `s3-access-example`에 대한 단기 자격 증명 세트를 가져옵니다.  

```
aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/xaccounts3access \
    --role-session-name s3-access-example
```
출력:  

```
{
    "AssumedRoleUser": {
        "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
        "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
    },
    "Credentials": {
        "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
        "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
        "Expiration": "2016-03-15T00:05:07Z",
        "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
    }
}
```
명령의 출력에는 AWS 인증에 사용할 수 있는 액세스 키, 시크릿 키 및 세션 토큰이 포함됩니다.  
AWS CLI를 사용하는 경우 역할과 연결된 이름이 지정된 프로파일을 설정할 수 있습니다. 프로파일을 사용하면 AWS CLI에서 assume-role을 호출하고 대신 자격 증명을 관리합니다. 자세한 내용은 *AWS IAM 사용자 안내서*의 [AWS CLI에서 IAM 역할 사용](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [AssumeRole](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)을 참조하세요.

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sts#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sts.StsClient;
import software.amazon.awssdk.services.sts.model.AssumeRoleRequest;
import software.amazon.awssdk.services.sts.model.StsException;
import software.amazon.awssdk.services.sts.model.AssumeRoleResponse;
import software.amazon.awssdk.services.sts.model.Credentials;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Locale;

/**
 * To make this code example work, create a Role that you want to assume.
 * Then define a Trust Relationship in the AWS Console. You can use this as an
 * example:
 *
 * {
 * "Version":"2012-10-17",		 	 	 
 * "Statement": [
 * {
 * "Effect": "Allow",
 * "Principal": {
 * "AWS": "<Specify the ARN of your IAM user you are using in this code example>"
 * },
 * "Action": "sts:AssumeRole"
 * }
 * ]
 * }
 *
 * For more information, see "Editing the Trust Relationship for an Existing
 * Role" in the AWS Directory Service guide.
 *
 * Also, set up your development environment, including your credentials.
 *
 * For information, see this documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class AssumeRole {
    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <roleArn> <roleSessionName>\s

                Where:
                    roleArn - The Amazon Resource Name (ARN) of the role to assume (for example, arn:aws:iam::000008047983:role/s3role).\s
                    roleSessionName - An identifier for the assumed role session (for example, mysession).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String roleArn = args[0];
        String roleSessionName = args[1];
        Region region = Region.US_EAST_1;
        StsClient stsClient = StsClient.builder()
                .region(region)
                .build();

        assumeGivenRole(stsClient, roleArn, roleSessionName);
        stsClient.close();
    }

    public static void assumeGivenRole(StsClient stsClient, String roleArn, String roleSessionName) {
        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();

            // Display the time when the temp creds expire.
            Instant exTime = myCreds.expiration();
            String tokenInfo = myCreds.sessionToken();

            // Convert the Instant to readable date.
            DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
                    .withLocale(Locale.US)
                    .withZone(ZoneId.systemDefault());

            formatter.format(exTime);
            System.out.println("The token " + tokenInfo + "  expires on " + exTime);

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}
```
+  API 세부 정보는 *AWS SDK for Java 2.x API 참조*의 [AssumeRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/sts-2011-06-15/AssumeRole)을 참조하십시오.

------
#### [ JavaScript ]

**SDK for JavaScript (v3)**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sts#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.
클라이언트를 생성합니다.  

```
import { STSClient } from "@aws-sdk/client-sts";
// Set the AWS Region.
const REGION = "us-east-1";
// Create an AWS STS service client object.
export const client = new STSClient({ region: REGION });
```
IAM 역할을 수임합니다.  

```
import { AssumeRoleCommand } from "@aws-sdk/client-sts";

import { client } from "../libs/client.js";

export const main = async () => {
  try {
    // Returns a set of temporary security credentials that you can use to
    // access Amazon Web Services resources that you might not normally
    // have access to.
    const command = new AssumeRoleCommand({
      // The Amazon Resource Name (ARN) of the role to assume.
      RoleArn: "ROLE_ARN",
      // An identifier for the assumed role session.
      RoleSessionName: "session1",
      // The duration, in seconds, of the role session. The value specified
      // can range from 900 seconds (15 minutes) up to the maximum session
      // duration set for the role.
      DurationSeconds: 900,
    });
    const response = await client.send(command);
    console.log(response);
  } catch (err) {
    console.error(err);
  }
};
```
+  API 세부 정보는 *AWS SDK for JavaScript API 참조*의 [AssumeRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleCommand)을 참조하십시오.

**SDK for JavaScript (v2)**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascript/example_code/sts#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
// Load the AWS SDK for Node.js
const AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

var roleToAssume = {
  RoleArn: "arn:aws:iam::123456789012:role/RoleName",
  RoleSessionName: "session1",
  DurationSeconds: 900,
};
var roleCreds;

// Create the STS service object
var sts = new AWS.STS({ apiVersion: "2011-06-15" });

//Assume Role
sts.assumeRole(roleToAssume, function (err, data) {
  if (err) console.log(err, err.stack);
  else {
    roleCreds = {
      accessKeyId: data.Credentials.AccessKeyId,
      secretAccessKey: data.Credentials.SecretAccessKey,
      sessionToken: data.Credentials.SessionToken,
    };
    stsGetCallerIdentity(roleCreds);
  }
});

//Get Arn of current identity
function stsGetCallerIdentity(creds) {
  var stsParams = { credentials: creds };
  // Create STS service object
  var sts = new AWS.STS(stsParams);

  sts.getCallerIdentity({}, function (err, data) {
    if (err) {
      console.log(err, err.stack);
    } else {
      console.log(data.Arn);
    }
  });
}
```
+  API 세부 정보는 *AWS SDK for JavaScript API 참조*의 [AssumeRole](https://docs.aws.amazon.com/goto/AWSJavaScriptSDK/sts-2011-06-15/AssumeRole)을 참조하세요.

------
#### [ PowerShell ]

**Tools for PowerShell V4**  
**요청하는 사용자가 일반적으로 액세스할 수 없는 AWS 리소스에 액세스하는 데 1시간 동안 사용할 수 있는 임시 자격 증명(액세스 키, 비밀 키 및 세션 토큰) 세트를 반환합니다. 반환된 자격 증명에는 수임 중인 역할의 액세스 정책과 제공된 정책에 의해 허용되는 권한이 있습니다. 제공된 정책을 사용하여 수임 중인 역할의 액세스 정책에 의해 정의된 권한을 초과하는 권한을 부여할 수 없습니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**예제 2: 수임된 역할의 액세스 정책에 정의된 것과 동일한 권한을 갖고 1시간 동안 유효한 임시 자격 증명 세트를 반환합니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**예제 3: cmdlet을 실행하는 데 사용되는 사용자 자격 증명과 연결된 MFA에서 생성된 토큰과 일련 번호를 제공하는 임시 자격 증명 세트를 반환합니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**예제 4: 고객 계정에 정의된 역할을 수임한 임시 자격 증명 세트를 반환합니다. 타사에서 수임할 수 있는 각 역할에 대해 고객 계정은 역할이 수임될 때마다 -ExternalID 파라미터로 전달되는 식별자를 사용하여 역할을 생성해야 합니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  API 세부 정보는 **AWS Tools for PowerShell Cmdlet 참조(V4)의 [AssumeRole](https://docs.aws.amazon.com/powershell/v4/reference)을 참조하세요.

**Tools for PowerShell V5**  
**요청하는 사용자가 일반적으로 액세스할 수 없는 AWS 리소스에 액세스하는 데 1시간 동안 사용할 수 있는 임시 자격 증명(액세스 키, 비밀 키 및 세션 토큰) 세트를 반환합니다. 반환된 자격 증명에는 수임 중인 역할의 액세스 정책과 제공된 정책에 의해 허용되는 권한이 있습니다. 제공된 정책을 사용하여 수임 중인 역할의 액세스 정책에 의해 정의된 권한을 초과하는 권한을 부여할 수 없습니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**예제 2: 수임된 역할의 액세스 정책에 정의된 것과 동일한 권한을 갖고 1시간 동안 유효한 임시 자격 증명 세트를 반환합니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**예제 3: cmdlet을 실행하는 데 사용되는 사용자 자격 증명과 연결된 MFA에서 생성된 토큰과 일련 번호를 제공하는 임시 자격 증명 세트를 반환합니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**예제 4: 고객 계정에 정의된 역할을 수임한 임시 자격 증명 세트를 반환합니다. 타사에서 수임할 수 있는 각 역할에 대해 고객 계정은 역할이 수임될 때마다 -ExternalID 파라미터로 전달되는 식별자를 사용하여 역할을 생성해야 합니다.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  API 세부 정보는 *AWS Tools for PowerShell Cmdlet 참조(V5)*의 [AssumeRole](https://docs.aws.amazon.com/powershell/v5/reference)을 참조하세요.

------
#### [ Python ]

**SDK for Python(Boto3)**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.
MFA 토큰이 필요한 IAM 역할을 수임하고 임시 자격 증명을 사용하여 계정에 대한 Amazon S3 버킷을 나열합니다.  

```
def list_buckets_from_assumed_role_with_mfa(
    assume_role_arn, session_name, mfa_serial_number, mfa_totp, sts_client
):
    """
    Assumes a role from another account and uses the temporary credentials from
    that role to list the Amazon S3 buckets that are owned by the other account.
    Requires an MFA device serial number and token.

    The assumed role must grant permission to list the buckets in the other account.

    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an ARN.
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    response = sts_client.assume_role(
        RoleArn=assume_role_arn,
        RoleSessionName=session_name,
        SerialNumber=mfa_serial_number,
        TokenCode=mfa_totp,
    )
    temp_credentials = response["Credentials"]
    print(f"Assumed role {assume_role_arn} and got temporary credentials.")

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Listing buckets for the assumed role's account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  API 세부 정보는 *AWSSDK for Python (Boto3) API 참조*의 [AssumeRole](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/AssumeRole)를 참조하십시오.

------
#### [ Ruby ]

**SDK for Ruby**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end
```
+  API 세부 정보는 *AWS SDK for Ruby API 참조*의 [AssumeRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/sts-2011-06-15/AssumeRole)을 참조하십시오.

------
#### [ Rust ]

**SDK for Rust**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/sts/#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
async fn assume_role(config: &SdkConfig, role_name: String, session_name: Option<String>) {
    let provider = aws_config::sts::AssumeRoleProvider::builder(role_name)
        .session_name(session_name.unwrap_or("rust_sdk_example_session".into()))
        .configure(config)
        .build()
        .await;

    let local_config = aws_config::from_env()
        .credentials_provider(provider)
        .load()
        .await;
    let client = Client::new(&local_config);
    let req = client.get_caller_identity();
    let resp = req.send().await;
    match resp {
        Ok(e) => {
            println!("UserID :               {}", e.user_id().unwrap_or_default());
            println!("Account:               {}", e.account().unwrap_or_default());
            println!("Arn    :               {}", e.arn().unwrap_or_default());
        }
        Err(e) => println!("{:?}", e),
    }
}
```
+  API 세부 정보는 *AWS SDK for Rust API 참조*의 [AssumeRole](https://docs.rs/aws-sdk-sts/latest/aws_sdk_sts/client/struct.Client.html#method.assume_role)을 참조하십시오.

------
#### [ Swift ]

**SDK for Swift**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift/example_code/iam#code-examples)에서 전체 예제를 확인하고 설정 및 실행하는 방법을 알아보세요.

```
import AWSSTS

    public func assumeRole(role: IAMClientTypes.Role, sessionName: String)
        async throws -> STSClientTypes.Credentials
    {
        let input = AssumeRoleInput(
            roleArn: role.arn,
            roleSessionName: sessionName
        )
        do {
            let output = try await stsClient.assumeRole(input: input)

            guard let credentials = output.credentials else {
                throw ServiceHandlerError.authError
            }

            return credentials
        } catch {
            print("Error assuming role: ", dump(error))
            throw error
        }
    }
```
+  API 세부 정보는 *AWS SDK for Swift API 참조*의 [AssumeRole](https://sdk.amazonaws.com/swift/api/awssts/latest/documentation/awssts/stsclient/assumerole(input:))을 참조하십시오.

------

# IAM 사용자를 위한 서비스별 자격 증명
<a name="id_credentials_service-specific-creds"></a>

서비스별 자격 증명은 특정 AWS 서비스를 위해 설계된 특수 인증 메커니즘입니다. 해당 자격 증명은 표준 AWS 자격 증명에 비해 간소화된 인증을 제공하며 개별 AWS 서비스의 인증 요구 사항에 맞게 조정됩니다. 다수의 AWS 서비스에서 사용할 수 있는 액세스 키와는 다르게 서비스별 자격 증명은 해당 자격 증명이 생성된 서비스에서만 사용하도록 설계되었습니다. 이 타겟팅된 접근 방식은 자격 증명의 범위를 제한하여 보안을 강화합니다.

서비스별 자격 증명은 일반적으로 사용자 이름과 암호 쌍 또는 특정 서비스의 요구 사항에 따라 형식이 지정된 특수 API 키로 구성됩니다. 서비스별 자격 증명을 생성하면 기본적으로 활성화 상태이며 즉시 사용할 수 있습니다. IAM 사용자당 지원되는 각 서비스에 대해 최대 2개의 서비스별 보안 인증 세트를 보유할 수 있습니다. 이 제한을 통해, 필요한 경우 새 세트로 교체하는 동안 활성 세트 하나를 유지할 수 있습니다. 현재 AWS가 서비스별 자격 증명을 지원하는 서비스는 다음과 같습니다.

## 서비스별 자격 증명을 사용해야 하는 경우
<a name="id_credentials_service-specific-creds-usecase"></a>

서비스별 자격 증명은 AWS 자격 증명, AWS SDK 또는 AWS API와 기본적으로 호환되지 않는 타사 라이브러리, SDK, 도구 또는 애플리케이션과의 호환성을 위해 사용됩니다. 이러한 사용 사례에는 자체 호스팅 인프라나 다른 제공업체가 호스팅하는 서비스에서 AWS 서비스로 마이그레이션이 포함됩니다.

처음부터 시작할 때는 가능한 한 IAM 역할에서 제공하는 자격 증명과 같은 AWS 임시 자격 증명을 사용하여 AWS 임시 자격 증명을 지원하는 라이브러리나 AWS SDK를 통해 AWS 서비스로 인증하는 것이 좋습니다.

## 서비스별 자격 증명 교체
<a name="id_credentials_service-specific-creds-rotation"></a>

서비스별 자격 증명을 정기적으로 교체하는 것이 보안 모범 사례입니다. 애플리케이션을 중단하지 않고 자격 증명 교체:

1. 동일한 서비스 및 IAM 사용자에 대한 서비스별 자격 증명 두 번째 세트 생성

1. 모든 애플리케이션이 새 자격 증명을 사용하도록 업데이트하고 올바르게 작동하는지 확인합니다.

1. 기존 자격 증명의 상태를 '비활성화'로 변경합니다.

1. 모든 애플리케이션이 제대로 작동하는지 확인

1. 더 이상 필요하지 않다고 확인한 후 비활성화된 서비스별 자격 증명을 삭제합니다.

## 서비스별 자격 증명 모니터링
<a name="id_credentials_service-specific-creds-monitoring"></a>

AWS CloudTrail을 사용하여 AWS 계정의 서비스별 자격 증명 사용을 모니터링할 수 있습니다. 서비스별 자격 증명 사용과 관련된 CloudTrail 이벤트를 보려면 CloudTrail 로그에서 자격 증명이 사용된 서비스의 이벤트를 검토합니다. 자세한 내용은 [AWS CloudTrail을 사용하여 IAM 및 AWS STS API 호출 로깅](cloudtrail-integration.md) 섹션을 참조하세요.

추가 보안을 위해 CloudWatch 경보가 무단 액세스 또는 기타 보안 문제를 보여줄 수 있는 특정 자격 증명 사용 패턴을 알리도록 설정하는 것이 좋습니다. CloudWatch Logs에 대한 자세한 정보는 *AWS CloudTrail 사용 설명서*의 [Amazon CloudWatch Logs로 CloudTrail 로그 파일 모니터링](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html)을 참조하세요.

다음 주제에서는 서비스별 자격 증명에 대한 정보를 제공합니다.

**Topics**
+ [서비스별 자격 증명을 사용해야 하는 경우](#id_credentials_service-specific-creds-usecase)
+ [서비스별 자격 증명 교체](#id_credentials_service-specific-creds-rotation)
+ [서비스별 자격 증명 모니터링](#id_credentials_service-specific-creds-monitoring)
+ [Amazon Bedrock and Amazon CloudWatch Logs용 API 키](id_credentials_bedrock_cloudwatchlogs.md)
+ [Amazon Keyspaces(Apache Cassandra용)와 함께 IAM 사용](id_credentials_keyspaces.md)

# Amazon Bedrock and Amazon CloudWatch Logs용 API 키
<a name="id_credentials_bedrock_cloudwatchlogs"></a>

**참고**  
Amazon CloudWatch Logs API 키는 현재 미리 보기에서 사용할 수 있으며 향후 몇 주 내에 정식으로 출시될 예정입니다. Amazon CloudWatch Logs API 키는 이 페이지에 설명된 Amazon Bedrock 장기 API 키와 유사성이 매우 높습니다. Amazon CloudWatch Logs 장기 API 키에 대한 자세한 내용은 [HLC 엔드포인트를 사용하여 Amazon CloudWatch Logs로 로그 전송](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HLC_Endpoint.html)을 참조하세요.

Amazon Bedrock은 선도적인 AI 회사 및 Amazon의 파운데이션 모델을 제공하는 완전관리형 서비스입니다. AWS Management Console을 통해 Amazon Bedrock에 액세스하고 AWS CLI, 또는 AWS API를 사용하여 프로그래밍 방식으로 액세스할 수 있습니다. 프로그래밍 방식으로 Amazon Bedrock에 요청을 할 때 [임시 보안 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) 또는 Amazon Bedrock API 키를 사용하여 인증할 수 있습니다. Amazon Bedrock은 두 가지 유형의 API 키를 지원합니다.
+ **단기 API 키** - 단기 API 키는 AWS 서명 버전 4를 사용하는 미리 서명된 URL입니다. 단기 API 키는 API 키를 생성한 자격 증명과 동일한 권한 및 기한을 공유하며 최대 12시간 또는 콘솔 세션의 남은 시간 중 더 빨리 끝나는 기간 동안 유효합니다. Amazon Bedrock 콘솔, Python 패키지 `aws-bedrock-token-generator` 및 다른 프로그래밍 언어용 패키지를 사용하여 단기 API 키를 생성할 수 있습니다. 자세한 내용은 *Amazon Bedrock 사용 설명서*의 [Amazon Bedrock API에 쉽게 액세스할 수 있도록 Amazon Bedrock API 키 생성](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html)을 참조하세요.
+ **장기 API 키** - 장기 API 키는 IAM 사용자와 연결되며 IAM [서비스별 자격 증명](id_credentials_service-specific-creds.md)을 사용하여 생성됩니다. 해당 자격 증명은 Amazon Bedrock에서만 사용하도록 설계되어 자격 증명 범위를 제한함으로써 보안을 강화합니다. 장기 API 키가 만료되는 만료 시간을 설정할 수 있습니다. IAM 또는 Amazon Bedrock 콘솔, AWS CLI 또는 AWS API를 사용하여 장기 API 키를 생성할 수 있습니다.

IAM 사용자는 Amazon Bedrock에 대해 최대 2개의 장기 API 키를 보유할 수 있으므로 보안 키 교체 사례 구현에 도움이 됩니다.

장기 API 키를 생성하면 자동으로 AWS 관리형 정책 [AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockLimitedAccess)가 IAM 사용자에게 연결됩니다. 이 정책은 핵심 Amazon Bedrock API 작업에 대한 액세스 권한을 부여합니다. Amazon Bedrock 액세스가 추가로 필요한 경우 IAM 사용자의 권한을 수정할 수 있습니다. 권한 수정에 대한 자세한 내용은 [IAM 자격 증명 권한 추가 및 제거](access_policies_manage-attach-detach.md) 섹션을 참조하세요. Amazon Bedrock 키를 사용하는 방법에 대한 자세한 내용은 *Amazon Bedrock 사용 설명서*의 [Use an Amazon Bedrock API key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html)를 참조하세요.

**참고**  
장기 API 키는 단기 API 키에 비해 보안 위험도가 높습니다. 가능하면 단기 API 키 또는 임시 보안 자격 증명을 사용하는 것이 좋습니다. 장기 API 키를 사용하는 경우 키 교체를 정기적으로 수행하는 사례를 구현하는 것이 좋습니다.

## 사전 조건
<a name="id_credentials_bedrock_prerequisites"></a>

IAM 콘솔에서 Amazon Bedrock 장기 API 키를 생성하려면 먼저 다음 사전 조건을 충족해야 합니다.
+ 장기 API 키와 연결할 IAM 사용자입니다. IAM 사용자 생성 지침은 [AWS 계정에서 IAM 사용자 생성](id_users_create.md) 섹션을 참조하세요.
+ 다음과 같이 IAM 사용자의 서비스별 자격 증명을 관리할 수 있는 IAM 정책 권한을 보유해야 합니다. 예제 정책은 서비스별 자격 증명을 생성, 나열, 업데이트, 삭제하고 재설정할 수 있는 권한을 부여합니다. 리소스 요소의 `username` 값을 Amazon Bedrock API 키를 생성할 IAM 사용자의 이름으로 바꿉니다.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ManageBedrockServiceSpecificCredentials",
              "Effect": "Allow",
              "Action": [
                  "iam:CreateServiceSpecificCredential",
                  "iam:ListServiceSpecificCredentials",
                  "iam:UpdateServiceSpecificCredential",
                  "iam:DeleteServiceSpecificCredential",
                  "iam:ResetServiceSpecificCredential"
              ],
              "Resource": "arn:aws:iam::*:user/username"
          }
      ]
  }
  ```

------

## Amazon Bedrock에 대한 장기 API 키 생성(콘솔)
<a name="id_credentials_bedrock_console_create"></a>

**Amazon Bedrock 장기 API 키 생성(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. IAM 콘솔의 탐색 창에서 **사용자**를 선택합니다.

1. Amazon Bedrock 장기 API 키를 생성할 IAM 사용자를 선택합니다.

1. **보안 자격 증명** 탭을 선택합니다.

1. **Amazon Bedrock에 대한 API 키** 섹션에서 **API 키 생성**을 선택합니다.

1. **API 키 만료**가 된 경우 다음 중 하나를 수행하세요..
   + API 키 만료 기간을 **1**, **5**, **30**, **90** 또는 **365**일 중에서 선택합니다.
   + **사용자 지정 기간**을 선택하여 사용자 지정 API 키 만료 날짜를 지정합니다.
   + **만료 기간 없음**(권장되지 않음)을 선택합니다.

1. **API 키 생성**을 선택합니다.

1. API 키를 복사 또는 다운로드합니다. API 키 값을 볼 수 있는 것은 이 때가 유일합니다.
**중요**  
API 키를 안전하게 저장합니다. 대화 상자를 닫은 이후에는 API 키를 다시 검색할 수 없습니다. 시크릿 액세스 키를 분실하거나 잊어버린 경우 검색할 수 없습니다. 대신 새 액세스 키를 생성하고 이전 키를 비활성화하세요.

## Amazon Bedrock용 장기 API 키 생성(AWS CLI)
<a name="id_credentials_bedrock_cli_create"></a>

AWS CLI를 사용하여 Amazon Bedrock 장기 API 키를 생성하려면 다음 단계를 사용합니다.

1. [create-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-user.html) 명령을 사용해 Amazon Bedrock과 함께 사용할 IAM 사용자를 생성합니다.

   ```
   aws iam create-user \
       --user-name BedrockAPIKey_1
   ```

1. [attach-user-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-user-policy.html) 명령을 사용해 AWS 관리형 정책을 `AmazonBedrockLimitedAccess` Amazon Bedrock IAM 사용자에게 연결합니다.

   ```
   aws iam attach-user-policy --user-name BedrockAPIKey_1 \
       --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html) 명령을 사용해 Amazon Bedrock 장기 API 키를 생성합니다. 자격 증명 기간에는 1\$136600일 사이의 값을 지정할 수 있습니다. 자격 증명 기간을 지정하지 않으면 API 키가 만료되지 않습니다.

   만료 기간이 30일인 장기 API 키 생성:

   ```
   aws iam create-service-specific-credential \
       --user-name BedrockAPIKey_1 \
       --service-name bedrock.amazonaws.com \
       --credential-age-days 30
   ```

응답에 반환된 `ServiceApiKeyValue`는 장기 Amazon Bedrock API 키입니다. 나중에 검색할 수 없으므로 `ServiceApiKeyValue` 값을 안전하게 저장하세요.

### 장기 API 키 나열(AWS CLI)
<a name="id_credentials_bedrock_cli_list"></a>

특정 사용자의 Amazon Bedrock 장기 API 키 메타데이터를 나열하려면 [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) 명령을 `--user-name` 파라미터와 함께 사용합니다.

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --user-name BedrockAPIKey_1
```

계정의 모든 Amazon Bedrock 장기 API 키 메타데이터를 나열하려면 [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) 명령을 `--all-users` 파라미터와 함께 사용합니다.

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --all-users
```

### 장기 API 키 상태 업데이트(AWS CLI)
<a name="id_credentials_bedrock_cli_update"></a>

Amazon Bedrock에 대한 장기 API 키의 상태를 업데이트하려면 [update-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-service-specific-credential.html) 명령을 사용합니다.

```
aws iam update-service-specific-credential \
    --user-name "BedrockAPIKey_1" \
    --service-specific-credential-id "ACCA1234EXAMPLE1234" \
    --status Inactive|Active
```

## Amazon Bedrock용 장기 API 키 생성(AWS API)
<a name="id_credentials_bedrock_api"></a>

다음 API 작업을 사용하여 Amazon Bedrock에 대한 장기 API 키를 생성 및 관리할 수 있습니다.
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html) 

# Amazon Keyspaces(Apache Cassandra용)와 함께 IAM 사용
<a name="id_credentials_keyspaces"></a>

Amazon Keyspaces(Apache Cassandra용)는 고가용성의 확장 가능한 관리형 Apache Cassandra 호환 데이터베이스 서비스입니다. AWS Management Console을 통해 또는 프로그래밍 방식으로 Amazon Keyspaces에 액세스할 수 있습니다. 서비스별 자격 증명을 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스하려면 `cqlsh` 또는 오픈 소스 Cassandra 드라이버를 사용할 수 있습니다. *서비스별 자격 증명*에는 Cassandra가 인증 및 액세스 관리에 사용하는 것과 같은 사용자 이름과 암호가 포함됩니다. 사용자당 지원되는 각 서비스에 대해 최대 2개의 서비스별 보안 인증 세트를 보유할 수 있습니다.

AWS 액세스 키를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스하려면 SigV4 플러그인과 함께 AWS SDK, AWS Command Line Interface(AWS CLI) 또는 오픈 소스 Cassandra 드라이버를 사용할 수 있습니다. 자세한 내용은 *Amazon Keyspaces (for Apache Cassandra) Developer Guide(Amazon Keyspaces(Apache Cassandra용) 개발자 안내서)*의 [Create and configure AWS credentials for Amazon Keyspaces(Amazon Keyspaces의 자격 증명 생성 및 구성)](https://docs.aws.amazon.com//keyspaces/latest/devguide/access.credentials.html)를 참조하세요.

**참고**  
콘솔을 통해서만 Amazon Keyspaces와 상호 작용하려는 경우에는 서비스별 자격 증명을 생성할 필요가 없습니다. 자세한 내용은 *Amazon Keyspaces (for Apache Cassandra) Developer Guide*(Amazon Keyspaces(Apache Cassandra용) 개발자 안내서)의 [Accessing Amazon Keyspaces using the console](https://docs.aws.amazon.com/keyspaces/latest/devguide/console_keyspaces.html)(콘솔을 사용하여 Amazon Keyspaces 액세스)을 참조하세요.

Amazon Keyspaces 액세스에 필요한 권한에 대한 자세한 내용은 *Amazon Keyspaces(Apache Cassandra용) 개발자 안내서*에서 [Amazon Keyspaces(Apache Cassandra용) 자격 증명 기반 정책 예](https://docs.aws.amazon.com/keyspaces/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console)를 참조하세요.

## Amazon Keyspaces 자격 증명 생성(콘솔)
<a name="keyspaces_credentials_console"></a>

AWS Management Console을 사용하여 IAM 사용자에 대한 Amazon Keyspaces(Apache Cassandra용) 자격 증명을 생성할 수 있습니다.

**Amazon Keyspaces 서비스별 자격 증명을 생성하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택한 다음 자격 증명이 필요한 사용자의 이름을 선택합니다.

1. **보안 자격 증명(Security Credentials)** 탭의 **Amazon Keyspaces(Apache Cassandra용)에 대한 자격 증명(Credentials for Amazon Keyspaces (for Apache Cassandra))** 아래에서 **자격 증명 생성(Generate credentials)**을 선택합니다.

1. 이제 서비스별 자격 증명을 사용할 수 있습니다. 이 때가 암호를 보거나 다운로드 할 수 있는 유일한 시간입니다. 나중에 복구할 수 없습니다. 그러나 언제든지 암호를 재설정할 수 있습니다. 나중에 필요하므로 사용자와 암호를 안전한 위치에 저장하세요.

## Amazon Keyspaces 자격 증명 생성(AWS CLI)
<a name="keyspaces_credentials_cli"></a>

AWS CLI을 사용하여 IAM 사용자에 대한 Amazon Keyspaces(Apache Cassandra용) 자격 증명을 생성할 수 있습니다.

**Amazon Keyspaces 서비스별 자격 증명을 생성하려면(AWS CLI)**
+ 다음 명령을 사용합니다.
  + [aws iam create-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-specific-credential.html)

## Amazon Keyspaces 자격 증명 생성(AWS API)
<a name="keyspaces_credentials_api"></a>

AWS API를 사용하여 IAM 사용자에 대한 Amazon Keyspaces(Apache Cassandra용) 자격 증명을 생성할 수 있습니다.

**Amazon Keyspaces 서비스별 자격 증명을 생성하려면(AWS API)**
+ 다음 작업을 완료합니다.
  + [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 

# 미사용 AWS 자격 증명 찾기
<a name="id_credentials_finding-unused"></a>

AWS 계정의 보안을 강화하려면 불필요한 IAM 사용자 보안 인증(암호와 액세스 키)을 제거합니다. 예를 들어, 사용자가 조직을 떠나거나 AWS 액세스가 더 이상 필요하지 않은 경우 해당 자격 증명을 찾아서 더 이상 작동하지 않도록 해야 합니다. 더 이상 필요 없는 자격 증명을 삭제하는 것이 가장 좋습니다. 나중에 필요한 경우가 생기면 언제든지 다시 생성할 수 있습니다. 적어도 암호를 변경하거나 액세스 키를 비활성화하여 이전 사용자가 더 이상 액세스할 수 없게 해야 합니다.

*미사용*은 이와는 다른 것으로 보통 특정 기간 동안 사용되지 않은 자격 증명을 뜻합니다.

## 미사용 암호 찾기
<a name="finding-unused-passwords"></a>

AWS Management Console을 사용하여 사용자의 암호 사용 정보를 볼 수 있습니다. 사용자 수가 많을 경우 콘솔을 사용하여 각 사용자가 자신의 콘솔 암호를 사용한 최종 시각에 대한 정보가 담긴 자격 증명 보고서를 다운로드할 수 있습니다. AWS CLI 또는 IAM API에서 해당 정보에 액세스할 수도 있습니다.

**미사용 암호를 확인하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 필요할 경우 사용자 테이블에 **Console last sign-in(콘솔 마지막 로그인)** 열을 추가합니다.

   1. 테이블 위 맨 오른쪽에서 설정 아이콘(![\[Settings icon\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/console-settings-icon.console.png))을 선택합니다.

   1. **표시되는 열 선택**에서 **콘솔 마지막 로그인**을 선택합니다.

   1. **확인**을 선택하여 사용자 목록으로 돌아갑니다.

1. [**Console last sign-in(콘솔 마지막 로그인)**] 열에 사용자가 콘솔을 통해 마지막으로 AWS에 로그인한 날짜가 표시됩니다. 이 정보를 통해 지정된 기간 이상 동안 암호를 사용하여 로그인하지 않은 사용자를 확인할 수 있습니다. 암호 사용자 중 로그인한 적이 없는 사용자는 이 열에 **없음**이라고 표시됩니다. **없음**은 암호가 없는 사용자를 나타냅니다. 최근에 사용된 적이 없는 암호는 삭제해야 할 자격 증명을 식별하기 위한 좋은 기준이 될 수 있습니다.
**중요**  
서비스 문제로 인해 암호가 마지막으로 사용된 데이터에 2018년 5월 3일 22:50 PDT \$1 2018년 5월 23일 14:08 PDT 사이의 암호 사용이 포함되어 있지 않습니다. 이는 IAM 콘솔에 표시되는 [마지막 로그인](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) 날짜, [IAM 자격 증명 보고서](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html)의 암호가 마지막으로 사용된 날짜와 [GetUser API 연산](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)에 의해 반환되는 암호가 마지막으로 사용된 날짜에 영향을 줍니다. 사용자가 해당 기간에 로그인한 경우 반환되는 암호가 마지막으로 사용된 날짜는 사용자가 2018년 5월 3일 이전에 마지막으로 로그인한 날짜입니다. 사용자가 2018년 5월 23일 14:08 PDT 이후에 로그인한 경우 반환되는 암호가 마지막으로 사용된 날짜는 정확합니다.  
마지막으로 사용된 암호 정보를 사용하여 사용되지 않는 자격 증명을 식별하고 삭제하는 경우(예: 지난 90일 동안 AWS에 로그인하지 않은 사용자 삭제) 2018년 5월 23일 이후의 날짜를 포함하도록 평가 기간을 조정하는 것이 좋습니다. 또는 사용자가 액세스 키를 사용하여 AWS에 프로그래밍 방식으로 액세스하는 경우 액세스 키가 마지막으로 사용된 정보가 모든 날짜에 대해 정확하므로 해당 정보를 참조할 수 있습니다.

**자격 증명 보고서를 다운로드하여 미사용 암호를 찾으려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **자격 증명 보고서**를 선택합니다.

1. **보고서 다운로드**를 선택하여 `status_reports_<date>T<time>.csv`라는 쉼표 구분 값(CSV) 파일을 다운로드합니다. 5번째 열에는 날짜 또는 다음 중 하나가 있는 `password_last_used` 열이 포함됩니다.
   + **해당 없음** - 할당된 암호가 전혀 없는 사용자
   + **no\$1information** - IAM이 2014년 10월 20일에 암호 수명을 추적하기 시작한 이후 암호를 사용하지 않은 사용자

**미사용 암호를 찾으려면(AWS CLI)**  
미사용 암호를 찾으려면 다음 명령을 실행합니다.
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)`는 각자 `PasswordLastUsed` 값이 있는 사용자 목록을 반환합니다. 값이 비어 있는 경우 사용자에게 암호가 없거나 2014년 10월 20일 IAM이 암호 수명을 추적하기 시작한 이후 암호가 사용되지 않은 것입니다.

**미사용 암호를 찾으려면(AWS API)**  
미사용 암호를 찾으려면 다음 연산을 호출합니다.
+  ` [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)`는 각각 `<PasswordLastUsed>` 값이 있는 사용자의 집합을 반환합니다. 값이 비어 있는 경우 사용자에게 암호가 없거나 2014년 10월 20일 IAM이 암호 수명을 추적하기 시작한 이후 암호가 사용되지 않은 것입니다.

자격 증명 보고서를 다운로드하기 위한 명령어에 대한 자세한 내용은 [자격 증명 보고서 가져오기(AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi)섹션을 참조하세요.

## 미사용 액세스 키 찾기
<a name="finding-unused-access-keys"></a>

AWS Management Console을 사용하여 사용자의 액세스 키 사용 정보를 볼 수 있습니다. 사용자 수가 많을 경우 콘솔을 사용하여 자격 증명 보고서를 다운로드하여 각 사용자가 자신의 액세스 키를 마지막으로 사용한 때를 알 수 있습니다. AWS CLI 또는 IAM API에서 해당 정보에 액세스할 수도 있습니다.

**미사용 액세스 키를 확인하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 필요할 경우 사용자 테이블에 **Access key last used(마지막으로 사용한 액세스 키)** 열을 추가합니다.

   1. 테이블 위 맨 오른쪽에서 설정 아이콘(![\[Settings icon\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/console-settings-icon.console.png))을 선택합니다.

   1. **표시되는 열 선택**에서 **마지막으로 사용한 액세스 키**를 선택합니다.

   1. **확인**을 선택하여 사용자 목록으로 돌아갑니다.

1. **Access key last used(마지막으로 사용한 액세스 키)** 열에는 사용자가 프로그래밍 방식으로 AWS에 마지막으로 액세스한 때부터 경과한 일수가 표시됩니다. 이 정보를 통해 지정된 기간 이상 동안 액세스 키를 사용하지 않은 사용자를 확인할 수 있습니다. 액세스 키가 없는 사용자는 이 열에 **–**가 표시됩니다. 최근에 사용된 적이 없는 액세스 키는 삭제해야 할 자격 증명을 식별하기 위한 좋은 기준이 될 수 있습니다.

**자격 증명 보고서를 다운로드하여 미사용 액세스 키를 찾으려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **Credential Report(자격 증명 보고서)**를 선택합니다.

1. **보고서 다운로드**를 선택하여 `status_reports_<date>T<time>.csv`라는 쉼표 구분 값(CSV) 파일을 다운로드합니다. 열 11부터 13에는 액세스 키 1의 마지막 사용 날짜, 리전 및 서비스 정보가 표시됩니다. 열 16부터 18에는 액세스 키 2에 대해 동일한 정보가 표시됩니다. 값이 **해당 없음**으로 되어 있는 것은 사용자에게 액세스 키가 없거나 2015년 4월 22일 IAM이 액세스 키 수명을 추적하기 시작한 이후 사용자가 액세스 키를 사용하지 않았다는 것입니다.

**미사용 액세스 키를 확인하려면(AWS CLI)**  
미사용 액세스 키를 찾으려면 다음 명령을 실행합니다.
+ `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)`는 `AccessKeyID`를 포함해 사용자의 액세스 키에 대한 정보를 반환합니다.
+ `[aws iam get-access-key-last-used](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)`는 액세스 키 ID를 받아들여 `LastUsedDate` 액세스 키의 마지막 사용 및 `Region` 마지막으로 요청된 서비스의 `ServiceName`을 포함하는 출력을 반환합니다. `LastUsedDate`가 없는 경우 2015년 4월 22일 IAM이 액세스 키 수명을 추적하기 시작한 이후 액세스 키가 사용되지 않은 것입니다.

**미사용 액세스 키를 확인하려면(AWS API)**  
미사용 액세스 키를 찾으려면 다음 연산을 호출합니다.
+ `[ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)`는 지정된 사용자와 연결된 액세스 키에 대한 `AccessKeyID` 값의 목록을 반환합니다.
+ `[GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)`는 액세스 키 ID를 받아들여 값의 집합을 반환합니다. `LastUsedDate`, 액세스 키가 마지막으로 사용된 `Region` 및 마지막으로 요청된 서비스의 `ServiceName`이 포함되어 있습니다. 값이 비어 있는 경우 사용자에게 액세스 키가 없거나 2015년 4월 22일 IAM이 액세스 키 수명을 추적하기 시작한 이후 액세스 키가 사용되지 않은 것입니다.

자격 증명 보고서를 다운로드하기 위한 명령어에 대한 자세한 내용은 [자격 증명 보고서 가져오기(AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi)섹션을 참조하세요.

# AWS 계정의 자격 증명 보고서 생성
<a name="id_credentials_getting-report"></a>

계정의 모든 사용자와 암호, 액세스 키, MFA 디바이스 등 이들의 자격 증명 상태를 나열하는 *자격 증명 보고서*를 생성하고 다운로드할 수 있습니다. AWS Management Console, [AWS SDK](https://aws.amazon.com/tools) 및 [명령줄 도구](https://aws.amazon.com/tools/#Command_Line_Tools) 또는 IAM API에서 자격 증명 보고서를 가져올 수 있습니다.

**참고**  
IAM 자격 증명 보고서에는 암호, 사용자당 처음 두 개의 액세스 키, MFA 디바이스 및 X.509 서명 인증서와 같은 IAM 관리형 자격 증명만 포함됩니다. 서비스별 자격 증명(예: CodeCommit 암호 또는 Amazon Bedrock 장기 API 키, Amazon CloudWatch Logs 장기 API 키)이나 처음 두 개 이상의 다른 사용자 액세스 키는 보고서에 포함되지 않습니다. 완전한 자격 증명 가시성을 얻으려면 [ListServiceSpecificCredentials](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 및 [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) API를 사용합니다.

자격 증명 보고서를 사용하면 감사 및 규정 준수에 도움이 됩니다. 이 보고서를 통해 암호, 액세스 키 업데이트 등 보안 인증 수명 주기 요구 사항이 어떤 영향을 주는지 감사할 수 있습니다. 외부 감사자에게 이 보고서를 제공하거나 보고서를 직접 다운로드할 권한을 감사자에게 부여할 수 있습니다.

최소 네 시간에 한 번씩 자격 증명 보고서를 생성할 수 있습니다. 보고서를 요청하면 IAM은 먼저 해당 AWS 계정의 보고서가 4시간 이내에 생성되었는지 여부를 확인합니다. 네 시간 이내에 생성된 경우 최신 보고서를 다운로드하고, 계정의 최신 보고서가 생성된지 네 시간이 넘었거나 해당 계정에 대한 이전 보고서가 없는 경우 IAM이 새 보고서를 생성하고 다운로드합니다.

**Topics**
+ [필수 권한](#id_credentials_required_permissions)
+ [보고서 형식 이해](#id_credentials_understanding_the_report_format)
+ [자격 증명 보고서 가져오기(콘솔)](#getting-credential-reports-console)
+ [자격 증명 보고서 가져오기(AWS CLI)](#getting-credential-reports-cliapi)
+ [자격 증명 보고서 가져오기(AWS API)](#getting-credential-reports-api)

## 필수 권한
<a name="id_credentials_required_permissions"></a>

보고서를 생성하고 다운로드하려면 다음 권한이 필요합니다.
+ 자격 증명 보고서를 생성하려면 `iam:GenerateCredentialReport` 
+ 보고서를 다운로드하려면 `iam:GetCredentialReport`

## 보고서 형식 이해
<a name="id_credentials_understanding_the_report_format"></a>

자격 증명 보고서는 CSV(쉼표로 구분된 값) 파일 형식으로 되어 있습니다. 공통 스프레드시트 소프트웨어로 CSV 파일을 열어 분석을 수행하거나 CSV 파일을 프로그래밍 방식으로 사용하고 사용자 지정 분석을 수행하는 애플리케이션을 구축할 수 있습니다.

CSV 파일에는 다음 열이 포함되어 있습니다:

**user**  
사용자의 표시 이름입니다.

**arn**  
사용자의 Amazon 리소스 이름(ARN)입니다. ARN에 대한 자세한 내용은 [IAM ARN](reference_identifiers.md#identifiers-arns) 섹션을 참조하세요.

**user\$1creation\$1time**  
사용자가 생성된 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))입니다.

**password\$1enabled**  
사용자에게 암호가 있는 경우 이 값은 `TRUE`입니다. 그렇지 않은 경우 이 값은 `FALSE`입니다. 조직의 일부로 생성된 새 멤버 계정에는 기본적으로 루트 사용자 자격 증명이 없으므로 이 값은 해당되는 새 멤버 계정에서 `FALSE`입니다.

**password\$1last\$1used**  
AWS 웹 사이트에 로그인하는 데 AWS 계정 루트 사용자 또는 사용자의 암호가 마지막으로 사용된 날짜 및 시간([ISO 8601 날짜-시간 형식](http://www.iso.org/iso/iso8601))입니다. 사용자의 마지막 로그인 시간을 캡처하는 AWS 웹 사이트는 AWS Management Console, AWS 토론 포럼, AWS Marketplace입니다. 암호가 5분 내에 두 번 이상 사용된 경우, 첫 번째 사용만 이 필드에 기록됩니다.  
+ 다음과 같은 경우 이 필드의 값은 `no_information`입니다.
  + 사용자의 암호가 사용된 적이 없는 경우.
  + 암호와 관련된 로그인 데이터가 없는 경우(예: IAM에서 2014년 10월 20일에 이 정보를 추적하기 시작한 이후로 사용자의 암호가 사용되지 않은 경우)
+ 사용자에게 암호가 없는 경우, 이 필드의 값은 `N/A`(해당 사항 없음)입니다.

**중요**  
서비스 문제로 인해 암호가 마지막으로 사용된 데이터에 2018년 5월 3일 22:50 PDT \$1 2018년 5월 23일 14:08 PDT 사이의 암호 사용이 포함되어 있지 않습니다. 이는 IAM 콘솔에 표시되는 [마지막 로그인](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) 날짜, [IAM 자격 증명 보고서](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html)의 암호가 마지막으로 사용된 날짜와 [GetUser API 연산](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)에 의해 반환되는 암호가 마지막으로 사용된 날짜에 영향을 줍니다. 사용자가 해당 기간에 로그인한 경우 반환되는 암호가 마지막으로 사용된 날짜는 사용자가 2018년 5월 3일 이전에 마지막으로 로그인한 날짜입니다. 사용자가 2018년 5월 23일 14:08 PDT 이후에 로그인한 경우 반환되는 암호가 마지막으로 사용된 날짜는 정확합니다.  
마지막으로 사용된 암호 정보를 사용하여 사용되지 않는 자격 증명을 식별하고 삭제하는 경우(예: 지난 90일 동안 AWS에 로그인하지 않은 사용자 삭제) 2018년 5월 23일 이후의 날짜를 포함하도록 평가 기간을 조정하는 것이 좋습니다. 또는 사용자가 액세스 키를 사용하여 AWS에 프로그래밍 방식으로 액세스하는 경우 액세스 키가 마지막으로 사용된 정보가 모든 날짜에 대해 정확하므로 해당 정보를 참조할 수 있습니다.

**password\$1last\$1changed**  
사용자의 암호가 마지막으로 설정된 날짜 및 시간([ISO 8601 날짜-시간 형식)](https://en.wikipedia.org/wiki/ISO_8601)입니다. 사용자에게 암호가 없는 경우, 이 필드의 값은 `N/A`(해당 사항 없음)입니다.

**password\$1next\$1rotation**  
계정에 암호 교체를 요구하는 [암호 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html)이 있는 경우, 사용자가 새 암호를 설정해야 할 때 이 필드에 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))이 포함됩니다. AWS 계정(루트)의 값은 항상 `not_supported`입니다.

**mfa\$1active**  
사용자에 대해 [멀티 팩터 인증](id_credentials_mfa.md)(MFA) 디바이스를 사용하도록 설정된 경우, 이 값은 `TRUE`입니다. 그렇지 않은 경우 이 값은 `FALSE`입니다.

**access\$1key\$11\$1active**  
사용자에게 액세스 키가 있고 액세스 키의 상태가 `Active`이면, 이 값은 `TRUE`입니다. 그렇지 않은 경우 이 값은 `FALSE`입니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.

**access\$1key\$11\$1last\$1rotated**  
사용자의 액세스 키가 생성되었거나 마지막으로 변경된 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))입니다. 사용자에게 활성 상태의 액세스 키가 없는 경우, 이 필드의 값은 `N/A`(해당 사항 없음)입니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.

**access\$1key\$11\$1last\$1used\$1date**  
사용자의 액세스 키를 AWS API 요청 서명에 마지막으로 사용한 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))입니다. 액세스 키가 15분 내에 두 번 이상 사용된 경우, 첫 번째 사용만 이 필드에 기록됩니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.  
다음과 같은 경우 이 필드의 값은 `N/A`(해당 사항 없음)입니다.  
+ 사용자에게 액세스 키가 없는 경우.
+ 액세스 키가 사용된 적이 없는 경우.
+ IAM에서 2015년 4월 22일에 이 정보를 추적하기 시작한 이후로 액세스 키가 사용되지 않은 경우

**access\$1key\$11\$1last\$1used\$1region**  
액세스 키가 마지막으로 사용된 [AWS 리전](https://docs.aws.amazon.com/general/latest/gr/rande.html)입니다. 액세스 키가 15분 내에 두 번 이상 사용된 경우, 첫 번째 사용만 이 필드에 기록됩니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.  
다음과 같은 경우 이 필드의 값은 `N/A`(해당 사항 없음)입니다.  
+ 사용자에게 액세스 키가 없는 경우.
+ 액세스 키가 사용된 적이 없는 경우.
+ IAM에서 2015년 4월 22일에 이 정보의 추적을 시작하기 전에 액세스 키가 마지막으로 사용된 경우
+ 마지막으로 사용한 서비스가 리전 전용이 아닌 경우(예: Amazon S3)

**access\$1key\$11\$1last\$1used\$1service**  
액세스 키로 가장 최근에 액세스한 AWS 제품입니다. 이 필드의 값은 서비스의 네임스페이스를 사용합니다. 예를 들어 Amazon S3의 경우 `s3`, Amazon EC2의 경우 `ec2`를 사용합니다. 액세스 키가 15분 내에 두 번 이상 사용된 경우, 첫 번째 사용만 이 필드에 기록됩니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.  
다음과 같은 경우 이 필드의 값은 `N/A`(해당 사항 없음)입니다.  
+ 사용자에게 액세스 키가 없는 경우.
+ 액세스 키가 사용된 적이 없는 경우.
+ IAM에서 2015년 4월 22일에 이 정보의 추적을 시작하기 전에 액세스 키가 마지막으로 사용된 경우

**access\$1key\$12\$1active**  
사용자에게 두 번째 액세스 키가 있고 두 번째 키의 상태가 `Active`이면, 이 값은 `TRUE`입니다. 그렇지 않은 경우 이 값은 `FALSE`입니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.  
사용자는 쉽게 교체할 수 있도록 최대 2개의 액세스 키를 보유할 수 있습니다. 이 경우 키를 먼저 업데이트한 다음 이전 키를 삭제하면 됩니다. 액세스 키 업데이트에 대한 자세한 내용은 [액세스 키 업데이트](id-credentials-access-keys-update.md) 섹션을 참조하세요.

**access\$1key\$12\$1last\$1rotated**  
사용자의 두 번째 액세스 키가 생성되었거나 마지막으로 변경된 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))입니다. 사용자에게 활성 상태의 두 번째 액세스 키가 있는 경우, 이 필드의 값은 `N/A`(해당 사항 없음)입니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.

**access\$1key\$12\$1last\$1used\$1date**  
AWS API 요청에 서명하는 데 사용자의 두 번째 액세스 키가 마지막으로 사용된 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))입니다. 액세스 키가 15분 내에 두 번 이상 사용된 경우, 첫 번째 사용만 이 필드에 기록됩니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다.  
다음과 같은 경우 이 필드의 값은 `N/A`(해당 사항 없음)입니다.  
+ 사용자에게 두 번째 액세스 키가 없는 경우.
+ 사용자의 두 번째 액세스 키가 사용된 적이 없는 경우.
+ IAM에서 2015년 4월 22일에 이 정보의 추적을 시작하기 전에 사용자의 두 번째 액세스 키가 마지막으로 사용된 경우

**access\$1key\$12\$1last\$1used\$1region**  
사용자의 두 번째 액세스 키가 마지막으로 사용된 [AWS 리전](https://docs.aws.amazon.com/general/latest/gr/rande.html)입니다. 액세스 키가 15분 내에 두 번 이상 사용된 경우, 첫 번째 사용만 이 필드에 기록됩니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다. 다음과 같은 경우 이 필드의 값은 `N/A`(해당 사항 없음)입니다.  
+ 사용자에게 두 번째 액세스 키가 없는 경우.
+ 사용자의 두 번째 액세스 키가 사용된 적이 없는 경우.
+ IAM에서 2015년 4월 22일에 이 정보의 추적을 시작하기 전에 사용자의 두 번째 액세스 키가 마지막으로 사용된 경우
+ 마지막으로 사용한 서비스가 리전 전용이 아닌 경우(예: Amazon S3)

**access\$1key\$12\$1last\$1used\$1service**  
사용자의 두 번째 액세스 키로 가장 최근에 액세스한 AWS 서비스입니다. 이 필드의 값은 서비스의 네임스페이스를 사용합니다. 예를 들어 Amazon S3의 경우 `s3`, Amazon EC2의 경우 `ec2`를 사용합니다. 액세스 키가 15분 내에 두 번 이상 사용된 경우, 첫 번째 사용만 이 필드에 기록됩니다. 계정 루트 사용자와 IAM 사용자 모두에게 적용됩니다. 다음과 같은 경우 이 필드의 값은 `N/A`(해당 사항 없음)입니다.  
+ 사용자에게 두 번째 액세스 키가 없는 경우.
+ 사용자의 두 번째 액세스 키가 사용된 적이 없는 경우.
+ IAM에서 2015년 4월 22일에 이 정보의 추적을 시작하기 전에 사용자의 두 번째 액세스 키가 마지막으로 사용된 경우

**cert\$11\$1active**  
사용자에게 X.509 서명 인증서가 있고 해당 인증서의 상태가 `Active`인 경우, 이 값은 `TRUE`입니다. 그렇지 않은 경우 이 값은 `FALSE`입니다.

**cert\$11\$1last\$1rotated**  
사용자의 서명 인증서가 생성되었거나 마지막으로 변경된 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))입니다. 사용자에게 활성 상태의 서명 인증서가 있는 경우, 이 필드의 값은 `N/A`(해당 사항 없음)입니다.

**cert\$12\$1active**  
사용자에게 두 번째 X.509 서명 인증서가 있고 해당 인증서의 상태가 `Active`인 경우, 이 값은 `TRUE`입니다. 그렇지 않은 경우 이 값은 `FALSE`입니다.  
사용자는 인증서 교체가 쉽도록 최대 두 개의 X.509 서명 인증서를 보유할 수 있습니다.

**cert\$12\$1last\$1rotated**  
사용자의 두 번째 서명 인증서가 생성되었거나 마지막으로 변경된 날짜 및 시간([ISO 8601 날짜-시간 형식](https://en.wikipedia.org/wiki/ISO_8601))입니다. 사용자에게 활성 상태의 두 번째 서명 인증서가 있는 경우, 이 필드의 값은 `N/A`(해당 사항 없음)입니다.

**additional\$1credentials\$1info**  
사용자에게 두 개 이상의 액세스 키 또는 인증서가 있는 경우 이 값은 추가 액세스 키 또는 인증서 수, 그리고 사용자와 연결된 액세스 키 또는 인증서를 나열하는 데 사용할 수 있는 작업이 됩니다.

## 자격 증명 보고서 가져오기(콘솔)
<a name="getting-credential-reports-console"></a>

AWS Management Console을 사용하여 자격 증명 보고서를 CSV(쉼표로 구분된 값) 파일로 다운로드할 수 있습니다.

**자격 증명 보고서를 다운로드하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **자격 증명 보고서**를 선택합니다.

1. **보고서 다운로드**를 선택합니다.

## 자격 증명 보고서 가져오기(AWS CLI)
<a name="getting-credential-reports-cliapi"></a>

**자격 증명 보고서를 다운로드하려면(AWS CLI)**

1. 자격 증명 보고서를 생성합니다. AWS에는 단일 보고서가 저장됩니다. 보고서가 있는 경우 자격 증명 보고서를 생성하면 이전 보고서를 덮어씁니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html) 

1. 마지막으로 생성된 보고서를 봅니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html) 

## 자격 증명 보고서 가져오기(AWS API)
<a name="getting-credential-reports-api"></a>

**자격 증명 보고서를 다운로드하려면(AWS API)**

1. 자격 증명 보고서를 생성합니다. AWS에는 단일 보고서가 저장됩니다. 보고서가 있는 경우 자격 증명 보고서를 생성하면 이전 보고서를 덮어씁니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html) 

1. 마지막으로 생성된 보고서를 봅니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html) 

# CodeCommit용 IAM 자격 증명: Git 자격 증명, SSH 키 및 AWS 액세스 키
<a name="id_credentials_ssh-keys"></a>

CodeCommit은 AWS 클라우드에서 프라이빗 Git 리포지토리를 호스팅하는 관리형 버전 관리 서비스입니다. CodeCommit을 사용하려면 CodeCommit 리포지토리와 통신하도록 Git 클라이언트를 구성합니다. 이 구성의 일환으로 CodeCommit에서 사용자 인증에 사용할 수 있는 IAM 자격 증명을 제공합니다. IAM에서는 세 가지 유형의 자격 증명으로 CodeCommit을 지원합니다.
+ Git 자격 증명: HTTPS를 통해 CodeCommit 리포지토리와 통신하는 데 사용할 수 있는 IAM 생성 사용자 이름 및 암호 페어입니다.
+ SSH 키: SSH를 통해 CodeCommit 리포지토리와 통신하기 위해 IAM 사용자와 연결할 수 있는 로컬로 생성된 퍼블릭-프라이빗 키 페어입니다.
+  [AWS 액세스 키](id_credentials_access-keys.md): HTTPS를 통해 CodeCommit 리포지토리와 통신하기 위해 AWS CLI에 포함된 자격 증명 헬퍼와 함께 사용할 수 있습니다.

**참고**  
또 다른 AWS 계정에서 리포지토리에 액세스하기 위해 SSH 키나 Git 자격 증명을 사용할 수 없습니다. 다른 AWS 계정의 IAM 사용자 및 그룹에 대해 CodeCommit 리포지토리 액세스를 구성하는 방법을 알아보려면 *AWS CodeCommit 사용 설명서*에서 [역할을 사용하여 AWS CodeCommit 리포지토리에 대한 크로스 계정 액세스 구성](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html)을 참조하세요.

각 옵션에 대한 자세한 내용은 다음 섹션을 참조하세요.

## CodeCommit에 Git 자격 증명 및 HTTPS 사용(권장)
<a name="git-credentials-code-commit"></a>

Git 자격 증명을 사용하여 IAM 사용자에 대한 정적 사용자 이름 및 암호 페어를 생성한 다음 HTTPS 연결에 이러한 자격 증명을 사용합니다. 정적 Git 자격 증명을 지원하는 타사 도구 또는 IDE(통합 개발 환경)에서도 이러한 자격 증명을 사용할 수 있습니다.

이러한 자격 증명은 모든 지원되는 운영 체제에 공통적이고 대부분의 자격 증명 관리 시스템, 개발 환경 및 기타 소프트웨어 개발 도구와 호환되므로 이는 권장되는 방법입니다. 언제든지 Git 자격 증명에 대한 암호를 재설정할 수 있습니다. 또한 자격 증명이 더 이상 필요하지 않은 경우 자격 증명을 비활성화하거나 삭제할 수 있습니다.

**참고**  
Git 보안 인증 정보에 대해 본인의 사용자 이름 또는 암호를 선택할 수 없습니다. IAM에서는 사용자가 AWS에 대한 보안 표준을 준수하고 CodeCommit에서 리포지토리를 보호하도록 돕기 위해 이러한 자격 증명을 생성합니다. 자격 증명은 생성될 때 한 번만 다운로드할 수 있습니다. 따라서 자격 증명을 안전한 장소에 보관하세요. 필요한 경우 언제든지 암호를 재설정할 수 있지만, 그러면 이전 암호를 사용하여 구성된 연결은 무효화됩니다. 새 암호를 사용하여 연결하려면 연결을 다시 구성해야 합니다.

자세한 내용은 다음 주제 섹션을 참조하세요.
+ IAM 사용자를 생성하려면 [AWS 계정에서 IAM 사용자 생성](id_users_create.md) 섹션을 참조하세요 
+ CodeCommit에서 Git 자격 증명을 생성하고 사용하려면 *AWS CodeCommit 사용 설명서*의 [Git 자격 증명을 사용하는 HTTPS 사용자의 경우](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html)를 참조하세요.

**참고**  
Git 자격 증명을 생성한 이후에 IAM 사용자의 이름을 변경해도 Git 자격 증명의 사용자 이름은 변경되지 않습니다. 사용자 이름과 암호는 동일하게 유지되고 계속 유효합니다.

**서비스별 보안 인증을 업데이트하려면**

1. 현재 사용 중인 서비스별 자격 증명 세트 이외에 두 번째 세트를 만듭니다.

1. 새 자격 증명 세트를 사용하도록 모든 애플리케이션을 업데이트하고 애플리케이션이 작동하는지 확인합니다.

1. 원래 자격 증명의 상태를 "Inactive"로 변경합니다.

1. 모든 애플리케이션이 계속 작동하는지 확인합니다.

1. 비활성 서버별 자격 증명을 삭제합니다.

## CodeCommit에 SSH 키 및 SSH 사용
<a name="ssh-keys-code-commit"></a>

SSH 연결을 사용하여 Git 및 CodeCommit에서 SSH 인증에 사용하는 퍼블릭 및 프라이빗 키 파일을 로컬 시스템에서 생성합니다. 퍼블릭 키를 IAM 사용자와 연결하고 프라이빗 키를 로컬 시스템에 저장합니다. 자세한 내용은 다음 주제 섹션을 참조하세요.
+ IAM 사용자를 생성하려면 [AWS 계정에서 IAM 사용자 생성](id_users_create.md) 섹션을 참조하세요 
+ SSH 퍼블릭 키를 생성하여 IAM 사용자와 연결하려면 *AWS CodeCommit 사용 설명서*에서 [Linux, macOS 또는 Unix에서 SSH 연결의 경우](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html) 또는 [Windows에서 SSH 연결의 경우](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html)를 참조하세요.

**참고**  
퍼블릭 키는 ssh-rsa 형식 또는 PEM 형식으로 인코딩해야 합니다. 퍼블릭 키의 최소 비트 길이는 2048비트이고 최대 길이는 16384비트입니다. 이것은 업로드하는 파일의 크기와는 별개입니다. 예를 들어 2048비트 키를 생성할 수 있으며 결과 PEM 파일의 길이는 1679바이트입니다. 퍼블릭 키를 다른 형식 또는 크기로 제공하면 키 형식이 잘못되었다는 오류 메시지가 표시됩니다.

## AWS CLI 자격 증명 헬퍼 및 CodeCommit에 HTTPS 사용
<a name="access-keys-code-commit"></a>

Git 자격 증명을 사용한 HTTPS 연결의 대안으로, Git에서 CodeCommit 리포지토리와 상호 작용하기 위해 AWS에 인증해야 할 때마다 암호화 방식으로 서명된 IAM 사용자 자격 증명 또는 Amazon EC2 인스턴스 역할을 사용하도록 허용할 수 있습니다. 이는 IAM 사용자 없이 CodeCommit 리포지토리에 연결할 수 있는 유일한 방법입니다. 또한 페더레이션 액세스 및 임시 자격 증명으로 작동되는 유일한 방법입니다. 자세한 내용은 다음 주제 섹션을 참조하세요.
+ 페더레이션 액세스에 대한 자세한 내용은 [ID 공급자 및 AWS로의 페더레이션](id_roles_providers.md) 및 [외부에서 인증된 사용자에 대한 액세스(ID 페더레이션)](id_roles_common-scenarios_federated-users.md) 단원을 참조하십시오.
+ 임시 자격 증명에 대한 자세한 내용은 [IAM의 임시 보안 자격 증명](id_credentials_temp.md) 및 [CodeCommit 리포지토리에 대한 임시 액세스](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html)를 참조하세요.

AWS CLI Credential Helper는 Keychain Access, Windows Credential Management 등과 같은 다른 자격 증명 헬퍼 시스템과 호환되지 않습니다. HTTPS를 통한 자격 증명 헬퍼 연결을 구성할 때 고려해야 할 추가 사항이 있습니다. 자세한 내용은 *AWS CodeCommit 사용 설명서*에서 [AWS CLI 자격 증명 헬퍼를 사용한 Linux, macOS 또는 Unix에서 HTTPS 연결](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html) 또는 [AWS CLI 자격 증명 헬퍼를 사용하여 Windows에서 HTTPS 연결](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-windows.html)을 참조하세요.

# IAM에서 서버 인증서 관리
<a name="id_credentials_server-certs"></a>

AWS에서 웹 사이트나 애플리케이션에 대한 HTTPS 연결을 활성화하려면 SSL/TLS *서버 인증서*가 필요합니다. AWS Certificate Manager(ACM)에서 지원되는 리전에서 사용되는 인증서의 경우, ACM을 사용하여 서버 인증서를 프로비저닝, 관리 및 배포하는 것이 좋습니다. 지원되지 않는 리전에서는 IAM을 인증서 관리자로 사용해야 합니다. ACM이 지원하는 리전을 알아보려면 **AWS 일반 참조의 [AWS Certificate Manager 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/acm.html)을 참조하세요.

**중요**  
ACM은 서버 인증서를 프로비저닝, 관리 및 배포하기 위한 기본 도구입니다. ACM을 사용하면 인증서를 요청하거나 기존 ACM 또는 외부 인증서를 AWS 리소스에 배포할 수 있습니다. ACM이 제공하는 인증서는 무료이고 자동으로 갱신됩니다. [지원되는 리전](https://docs.aws.amazon.com/general/latest/gr/acm.html)에서는 ACM을 사용하여 콘솔에서 또는 프로그래밍 방식으로 서버 인증서를 관리할 수 있습니다. ACM 사용에 대한 자세한 내용은 [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)를 참조하세요. ACM 인증서 요청에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [퍼블릭 인증서 요청](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) 또는 [프라이빗 인증서 요청](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html)을 참조하세요. 서드 파티 인증서를 ACM으로 가져오는 방법에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 가져오기](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)를 참조하세요.

[ACM에서 지원](https://docs.aws.amazon.com/general/latest/gr/acm.html)하지 않는 리전에서 HTTPS 연결을 지원해야 하는 경우에만 IAM을 인증서 관리자로 사용합니다. IAM은 프라이빗 키를 안전하게 암호화하고 암호화된 버전을 IAM SSL 인증서 스토리지에 저장합니다. IAM은 모든 리전에서 서버 인증서 배포를 지원하지만 외부 공급자로부터 AWS에서 사용할 인증서를 얻어야 합니다. ACM 인증서는 IAM에 업로드할 수 없습니다. 또한 IAM 콘솔에서 인증서를 관리할 수 없습니다.

서드 파티 인증서를 IAM에 업로드하는 방법에 대한 자세한 정보는 다음 주제를 참조하세요.

**Topics**
+ [서버 인증서 업로드(AWS API)](#upload-server-certificate)
+ [서버 인증서를 위한 AWS API 작업](#id_credentials_server-certs-api)
+ [서버 인증서 문제 해결](#server-certificate-troubleshooting)

## 서버 인증서 업로드(AWS API)
<a name="upload-server-certificate"></a>

IAM에 서버 인증서를 업로드하려면 인증서와 함께 그에 딸린 프라이빗 키를 제공해야 합니다. 인증서에 자체 서명이 되어 있지 않은 경우, 인증서 체인도 제공해야 합니다. (자체 서명된 인증서를 업로드하는 경우에는 인증서 체인이 필요하지 않습니다). 인증서를 업로드하기 전에 이 모든 항목이 있는지, 있다면 각 항목이 다음 기준을 충족하는지 확인하세요.
+ 인증서는 업로드 시점에 유효해야 합니다. 유효 기간이 시작되기 전(인증서의 `NotBefore` 날짜) 또는 만료된 후(인증서의 `NotAfter` 날짜)에는 인증서를 업로드할 수 없습니다.
+ 프라이빗 키는 암호화되지 않은 것이어야 합니다. 패스워드나 패스프레이즈로 보호된 프라이빗 키는 업로드할 수 없습니다. 암호화된 프라이빗 키의 해독에 대한 도움말은 [서버 인증서 문제 해결](#server-certificate-troubleshooting) 섹션을 참조하세요.
+ 인증서, 프라이빗 키 및 인증서 체인은 모두 PEM 인코딩되어야 합니다. 이 항목들을 PEM 형식으로 변환하는 작업에 대한 도움말은 [서버 인증서 문제 해결](#server-certificate-troubleshooting) 섹션을 참조하세요.

[IAM API](https://docs.aws.amazon.com/IAM/latest/APIReference/)를 사용하여 인증서를 업로드하려면 [UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html) 요청을 전송합니다. 다음 예에서는 [AWS Command Line Interface(AWS CLI)](https://aws.amazon.com/cli/)에서 이 작업을 수행하는 방법을 보여줍니다. 이 예시에서는 다음과 같이 가정합니다.
+ PEM 인코딩된 인증서가 `Certificate.pem`이라는 파일에 저장되어 있다.
+ PEM 인코딩된 인증서 체인이 `CertificateChain.pem`이라는 파일에 저장되어 있다.
+ PEM 인코딩된 비암호화 프라이빗 키가 `PrivateKey.pem`이라는 파일에 저장되어 있다.
+ (선택 사항) 키 값 페어로 서버 인증서를 태깅하는 것이 좋습니다. 예를 들어 인증서를 식별하고 구성하는 데 도움이 되도록 태그 키 `Engineering`과 태그 값 `Department`를 추가할 수 있습니다.

다음 예제 명령을 사용하려면 이 같은 파일 이름을 고유한 이름으로 바꿉니다. *ExampleCertificate*를 업로드한 인증서의 이름으로 바꿉니다. 인증서를 태깅하려면 *ExampleKey* 및 *ExampleValue* 태그 키 값 페어를 고유한 값으로 바꿉니다. 하나의 연속선에 명령을 입력합니다. 다음 예시에는 가독성을 높여주는 줄바꿈과 추가 공백이 포함되어 있습니다.

```
aws iam upload-server-certificate --server-certificate-name ExampleCertificate
                                    --certificate-body file://Certificate.pem
                                    --certificate-chain file://CertificateChain.pem
                                    --private-key file://PrivateKey.pem
                                    --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'
```

선행 명령은 성공적으로 실행되는 경우 [Amazon Resource Name(ARN)](reference_identifiers.md#identifiers-arns), 표시 이름, 식별자(ID), 만료 날짜, 태그 등 업로드된 인증서에 대한 메타데이터를 반환합니다.

**참고**  
Amazon CloudFront에서 사용할 서버 인증서를 업로드하는 경우 `--path` 옵션을 사용하여 경로를 지정해야 합니다. 경로는 `/cloudfront`로 시작해야 하고 후행 슬래시를 포함해야 합니다(예: `/cloudfront/test/`).

AWS Tools for Windows PowerShell를 사용하여 인증서를 업로드하려면 [Publish-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Publish-IAMServerCertificate.html&tocid=Publish-IAMServerCertificate)를 사용하세요.

## 서버 인증서를 위한 AWS API 작업
<a name="id_credentials_server-certs-api"></a>

서버 인증서를 보고, 태그를 지정하고, 이름을 바꾸고, 삭제하려면 다음 명령을 사용합니다.
+ 인증서를 검색하려면 [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html)를 사용합니다. 이 요청은 인증서, 인증서 체인(업로드된 경우) 및 인증서 관련 메타데이터를 반환합니다.
**참고**  
업로드 후에는 IAM에서 프라이빗 키를 다운로드하거나 조회할 수 없습니다.
+ 인증서를 검색하려면 [Get-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificate.html&tocid=Get-IAMServerCertificate)를 사용합니다.
+ 업로드한 서버 인증서를 나열하려면 [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html)를 사용합니다. 이 요청은 각 인증서 관련 메타데이터가 담긴 목록을 반환합니다.
+ 업로드한 서버 인증서의 목록을 나열하려면 [Get-IAMServerCertificates](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificates.html&tocid=Get-IAMServerCertificates)를 사용합니다.
+ 기존 서버 인증서에 태그를 지정하려면 [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html)를 사용합니다.
+ 서버 인증서에서 태그를 해제하려면 [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html)를 사용합니다.
+ 서버 인증서의 이름을 바꾸거나 해당 경로를 업데이트하려면 [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html)를 사용합니다.

   다음 예에서는 AWS CLI에서 이 작업을 수행하는 방법을 보여줍니다.

  다음 예시 명령을 사용하려면 기존 및 신규 인증서의 이름과 인증서 경로를 바꾸고 명령을 하나의 연속선에 입력해야 합니다. 다음 예시에는 가독성을 높여주는 줄바꿈과 추가 공백이 포함되어 있습니다.

  ```
  aws iam update-server-certificate --server-certificate-name ExampleCertificate
                                      --new-server-certificate-name CloudFrontCertificate
                                      --new-path /cloudfront/
  ```

  AWS Tools for Windows PowerShell을(를) 사용하여 서버 인증서의 이름을 변경하거나 경로를 업데이트하려면 [Update-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Update-IAMServerCertificate.html&tocid=Update-IAMServerCertificate)을 사용하세요.
+ 서버 인증서를 삭제하려면 [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html)를 사용합니다.

  AWS Tools for Windows PowerShell을 사용하여 서버 인증서를 삭제하려면 [Remove-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Remove-IAMServerCertificate.html&tocid=Remove-IAMServerCertificate)을 사용하세요.

## 서버 인증서 문제 해결
<a name="server-certificate-troubleshooting"></a>

IAM에 인증서를 업로드하려면 인증서, 프라이빗 키 및 인증서 체인이 모두 PEM으로 인코딩되어 있어야 합니다. 또한 프라이빗 키가 암호화되지 않은 것이어야 합니다. 다음 예시를 참조하세요.

**Example PEM으로 인코딩된 인증서 예시**  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

**Example PEM 인코딩된 비암호화 프라이빗 키 예시**  

```
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
```

**Example PEM 인코딩된 인증서 체인 예시**  
인증서 체인에는 한 개 이상의 인증서가 포함되어 있습니다. 텍스트 편집기, Windows의 copy 명령 또는 Linux의 cat 명령을 사용하여 여러 인증서 파일을 하나의 체인으로 연결할 수 있습니다. 여러 개의 인증서를 포함하는 경우 각 인증서가 앞에 지정된 인증서를 인증해야 합니다. 루트 CA 인증서를 포함하여 인증서를 연결함으로써 이를 달성합니다.  
다음 예시의 경우에는 세 개의 인증서가 포함되어 있지만, 사용자에 따라 인증서 체인에 포함된 인증서가 그보다 많거나 적을 수 있습니다.  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

이 항목들이 IAM에 업로드하기에 적합한 형식이 아닌 경우, [OpenSSL](https://openssl.org/)을 사용하여 적합한 형식으로 변환할 수 있습니다.

**인증서 또는 인증서 체인을 DER에서 PEM으로 변환하려면**  
다음 예시와 같이 [OpenSSL **x509** 명령](https://openssl.org/docs/manmaster/man1/x509.html)을 사용합니다. 다음 예시 명령에서 `Certificate.der`을 DER 인코딩된 인증서가 포함된 파일의 이름으로 대체합니다. `Certificate.pem`을, PEM 인코딩된 인증서를 포함할 출력 파일에 지정하려는 이름으로 바꿉니다.  

```
openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem
```
 

**프라이빗 키를 DER에서 PEM으로 변환하려면**  
다음 예시와 같이 [OpenSSL **rsa** 명령](https://openssl.org/docs/manmaster/man1/rsa.html)을 사용합니다. 다음 예시 명령에서 `PrivateKey.der`을 DER 인코딩된 프라이빗 키가 포함된 파일의 이름으로 대체해야 합니다. `PrivateKey.pem`을, PEM 인코딩된 프라이빗 키를 포함할 출력 파일에 지정하려는 이름으로 바꿉니다.  

```
openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem
```
 

**암호화된 프라이빗 키를 해독하려면(패스워드나 패스프레이즈 제거)**  
다음 예시와 같이 [OpenSSL **rsa** 명령](https://openssl.org/docs/manmaster/man1/rsa.html)을 사용합니다. 다음 예시 명령을 사용하려면 `EncryptedPrivateKey.pem`을 암호화된 프라이빗 키가 포함된 파일의 이름으로 대체해야 합니다. `PrivateKey.pem`을, PEM 인코딩된 비암호화 프라이빗 키를 포함할 출력 파일에 지정하려는 이름으로 바꿉니다.  

```
openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem
```
 

**인증서 번들을 PKCS\$112(PFX)에서 PEM으로 변환하려면**  
다음 예시와 같이 [OpenSSL **pkcs12** 명령](https://openssl.org/docs/manmaster/man1/pkcs12.html)을 사용합니다. 다음 예시 명령에서 `CertificateBundle.p12`를 PKCS\$112 인코딩된 인증서 번들이 포함된 파일의 이름으로 대체합니다. `CertificateBundle.pem`을, PEM 인코딩된 인증서 번들을 포함할 출력 파일에 지정하려는 이름으로 대체합니다.  

```
openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes
```
 

**인증서 번들을 PKCS\$17에서 PEM으로 변환하려면**  
다음 예시와 같이 [OpenSSL **pkcs7** 명령](https://openssl.org/docs/manmaster/man1/pkcs7.html)을 사용합니다. 다음 예시 명령에서 `CertificateBundle.p7b`를 PKCS\$17 인코딩된 인증서 번들이 포함된 파일의 이름으로 대체합니다. `CertificateBundle.pem`을, PEM 인코딩된 인증서 번들을 포함할 출력 파일에 지정하려는 이름으로 대체합니다.  

```
openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem
```