

# SEC02-BP02 임시 보안 인증 정보 사용
<a name="sec_identities_unique"></a>

 모든 유형의 인증을 수행할 때 보안 인증 정보가 의도치 않게 공개, 공유 또는 도난 당하는 위험을 줄이거나 제거하기 위해 장기 보안 인증 정보 대신 임시 보안 인증 정보를 사용하는 것이 가장 좋습니다. 

**원하는 결과:** 장기 보안 인증 정보의 위험을 줄이려면 가능한 한 인적 자격 증명과 시스템 자격 증명 모두에 대해 임시 보안 인증 정보를 사용합니다. 장기 보안 인증 정보는 많은 위험을 초래합니다. 예를 들어 퍼블릭 GitHub 리포지토리에 코드를 업로드할 수 있습니다. 임시 보안 인증 정보를 사용하면 보안 인증 정보가 손상될 가능성이 크게 줄어듭니다. 

**일반적인 안티 패턴:**
+  개발자가 페더레이션을 사용하여 CLI에서 임시 보안 인증 정보를 획득하는 대신 IAM users의 장기 액세스 키를 사용합니다. 
+  개발자가 장기 액세스 키를 코드에 포함하고 해당 코드를 퍼블릭 Git 리포지토리에 업로드합니다. 
+  개발자가 앱 스토어에서 사용할 수 있도록 장기 액세스 키를 모바일 앱에 포함합니다. 
+  사용자가 다른 사용자와 장기 액세스 키를 공유하거나 직원이 장기 액세스 키를 소유한 상태로 퇴사합니다. 
+  임시 보안 인증 정보를 사용할 수 있는 경우에도 시스템 자격 증명에 장기 액세스 키를 사용합니다. 

 **이 모범 사례를 따르지 않을 경우 노출 위험도:** 높음 

## 구현 가이드
<a name="implementation-guidance"></a>

 모든 AWS API 및 CLI 요청에 대해 장기 보안 인증 정보 대신 임시 보안 인증 정보를 사용합니다. AWS 서비스에 대한 API 및 CLI 요청은 거의 모든 경우에 [AWS 액세스 키](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_access-keys.html)를 사용하여 서명해야 합니다. 이러한 요청은 임시 또는 장기 보안 인증 정보로 서명할 수 있습니다. 장기 액세스 키라고도 하는 장기 보안 인증 정보를 사용해야 하는 유일한 경우는 [IAM 사용자](https://docs.aws.amazon.com//latest/UserGuide/id_users.html) 또는 [AWS 계정 루트 사용자](https://docs.aws.amazon.com//latest/UserGuide/id_root-user.html)를 사용하는 경우입니다. 다른 방법을 통해 AWS에 페더레이션하거나 [IAM 역할](https://docs.aws.amazon.com//latest/UserGuide/id_roles.html)을 수임할 때 임시 보안 인증 정보가 생성됩니다. 로그인 보안 인증 정보를 사용하여 AWS Management Console에 액세스하는 경우에도 AWS 서비스를 호출할 수 있도록 임시 보안 인증 정보가 생성됩니다. 장기 보안 인증 정보가 필요한 경우는 거의 없으며 임시 보안 인증 정보를 사용하여 대부분의 작업을 수행할 수 있습니다. 

 임시 보안 인증 정보를 선호하여 장기 보안 인증 정보 사용을 피하는 것은 페더레이션 및 IAM 역할을 선호하여 IAM 사용자의 사용을 줄이는 전략과 함께 수행해야 합니다. 과거에는 IAM 사용자가 인적 자격 증명과 시스템 자격 증명 모두에 사용되었지만 이제는 장기 액세스 키 사용의 위험을 피하기 위해 사용하지 않는 것이 좋습니다. 

### 구현 단계
<a name="implementation-steps"></a>

 직원, 관리자, 개발자, 운영자 및 고객과 같은 인적 자격 증명의 경우: 
+  [중앙 집중식 자격 증명 공급자를 사용](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_identities_identity_provider.html)해야 하며 [인적 사용자가 임시 보안 인증 정보를 사용하여 AWS에 액세스하려면 자격 증명 공급자와의 페더레이션을 사용해야 합니다](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html#bp-users-federation-idp). 사용자에 대한 페더레이션은 [각 AWS 계정에 대한 직접 페더레이션](https://aws.amazon.com/identity/federation/)을 사용하거나 [AWS IAM Identity Center(AWS IAM Identity Center의 후속 서비스)](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) 및 선택한 자격 증명 공급자를 사용하여 수행할 수 있습니다. 페더레이션은 장기 보안 인증 정보를 제거하는 것 외에도 IAM 사용자를 사용하는 것보다 많은 이점을 제공합니다. 사용자는 [직접 페더레이션](https://aws.amazon.com/blogs/security/how-to-implement-federated-api-and-cli-access-using-saml-2-0-and-ad-fs/)에 대한 명령줄에서 또는 [IAM Identity Center](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)를 사용하여 임시 보안 인증 정보를 요청할 수도 있습니다. 즉, IAM 사용자 또는 사용자에 대한 장기 보안 인증 정보가 필요한 사용 사례가 거의 없습니다.  
+  서비스형 소프트웨어(SaaS) 공급자와 같은 타사에 AWS 계정의 리소스에 대한 액세스 권한을 부여할 때 [크로스 계정 역할](https://docs.aws.amazon.com//latest/UserGuide/tutorial_cross-account-with-roles.html) 및 [리소스 기반 정책](https://docs.aws.amazon.com//latest/UserGuide/access_policies_identity-vs-resource.html)을 사용할 수 있습니다. 
+  소비자 또는 고객에게 AWS 리소스에 대한 액세스 권한을 부여해야 하는 경우 [Amazon Cognito 자격 증명 풀](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html) 또는 [Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)을 사용하여 임시 보안 인증 정보를 제공할 수 있습니다. 보안 인증 정보에 대한 권한은 IAM 역할을 통해 구성됩니다. 또한 인증되지 않은 게스트 사용자의 경우, 권한이 제한된 별도의 IAM 역할을 정의할 수 있습니다. 

 시스템 자격 증명의 경우 장기 보안 인증 정보를 사용해야 할 수 있습니다. 이러한 경우 [워크로드에서 AWS에 액세스하려면 IAM 역할과 함께 임시 보안 인증 정보를 사용해야 합니다](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html#bp-workloads-use-roles). 
+  [Amazon Elastic Compute Cloud](https://aws.amazon.com/pm/ec2/)(Amazon EC2)의 경우 [Amazon EC2에 대한 역할](https://docs.aws.amazon.com//latest/UserGuide/id_roles_use_switch-role-ec2.html)을 사용할 수 있습니다. 
+  [AWS Lambda](https://aws.amazon.com/lambda/)를 사용하면 임시 보안 인증 정보를 사용하여 AWS 작업을 수행할 수 있는 서비스 권한을 부여하도록 [Lambda 실행 역할](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)을 구성할 수 있습니다. IAM 역할을 사용하여 임시 보안 인증 정보를 부여하는 AWS 서비스에 대한 다른 유사한 모델이 많이 있습니다. 
+  IoT 디바이스의 경우 [AWS IoT Core 보안 인증 정보 공급자](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)를 사용하여 임시 보안 인증 정보를 요청할 수 있습니다. 
+  온프레미스 시스템 또는 AWS 리소스에 액세스해야 하는 AWS 외부에서 실행되는 시스템의 경우 [IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html)를 사용할 수 있습니다. 

 임시 보안 인증 정보를 사용할 수 없고 장기 보안 인증 정보를 사용해야 하는 시나리오가 있습니다. 이러한 상황에서는 [보안 인증 정보를 주기적으로 감사 및 교체](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_identities_audit.html)하고 [장기 보안 인증 정보가 필요한 사용 사례를 위해 정기적으로 액세스 키를 교체](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html#rotate-credentials)합니다. 장기 보안 인증 정보가 필요할 수 있는 몇 가지 예로는 WordPress 플러그인 및 타사 AWS 클라이언트가 있습니다. 장기 보안 인증 정보를 사용해야 하는 상황이나 데이터베이스 로그인과 같이 AWS 액세스 키 이외의 보안 인증 정보에 대해 [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)와 같은 보안 암호 관리를 처리하도록 설계된 서비스를 사용할 수 있습니다. Secrets Manager를 사용하면 [지원되는 서비스](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating.html)를 사용하여 암호화된 보안 암호를 간단하게 관리 및 교체하고 안전하게 저장할 수 있습니다. 장기 보안 인증 정보 교체에 대한 자세한 내용은 [액세스 키 교체](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)를 참조하세요. 

## 리소스
<a name="resources"></a>

 **관련 모범 사례:** 
+ [SEC02-BP03 안전하게 보안 암호 저장 및 사용](sec_identities_secrets.md) 
+ [SEC02-BP04 중앙 집중식 자격 증명 공급자 사용](sec_identities_identity_provider.md) 
+ [SEC03-BP08 안전하게 조직과 리소스 공유](sec_permissions_share_securely.md) 

 **관련 문서:** 
+  [임시 보안 인증 정보](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_temp.html) 
+  [AWS 보안 인증 정보](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) 
+  [IAM 보안 모범 사례](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html) 
+  [IAM 역할](https://docs.aws.amazon.com//latest/UserGuide/id_roles.html) 
+  [IAM Identity Center](https://aws.amazon.com/iam/identity-center/) 
+  [자격 증명 공급자 및 페더레이션](https://docs.aws.amazon.com//latest/UserGuide/id_roles_providers.html) 
+  [액세스 키 교체](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) 
+  [보안 파트너 솔루션: 액세스 및 액세스 제어](https://aws.amazon.com/security/partner-solutions/#access-control) 
+  [AWS 계정 루트 사용자](https://docs.aws.amazon.com//latest/UserGuide/id_root-user.html) 

 **관련 동영상:** 
+  [Managing user permissions at scale with AWS IAM Identity Center(successor to AWS IAM Identity Center)(AWS IAM Identity Center(AWS IAM Identity Center의 후속 버전)를 사용하여 대규모로 사용자 권한 관리)](https://youtu.be/aEIqeFCcK7E) 
+  [Mastering identity at every layer of the cake(케이크의 모든 계층에서 자격 증명 마스터링)](https://www.youtube.com/watch?v=vbjFjMNVEpc) 