AWS CLI

circle-info

Okta를 통한 AWS Command Line Interface (AWS CLI) 인증 구성하는 가이드 입니다.

circle-check

1. AWS Account Federation

circle-exclamation
circle-info

Okta 공식 구성 가이드

AWS CLI 전용 OIDC 앱을 Okta에서 Custom App으로 구성하며, SAML 기반으로 구성한 AWS Federation 구성 앱과 통합하여 Account / Role이 부여됩니다.

1.1 AWS CLI 용도의 OIDC Custom Application 구성

  • Okta 관리콘솔에서 "Applications" → "Create App Integration" 선택

  • "OIDC - OpenID Connect" 메소드와 "Native Application" 타입을 선택 후 "Next"를 클릭합니다.

  • 아래 옵션 및 항목을 적용 후 "Save" 합니다.

    • App integration name : AWS CLI

    • Grant type :

      • "Device Authorization" 옵션 체크

      • Advanced 선택 후 "Token Exchange" 옵션 체크

    • Controlled access : "Skip group assignment for now" 선택 후 "Save"

  • Application이 생성되면 "General" 항목에서 "Client ID" 정보를 복사해둡니다.

1.2 AWS Account Federation에 AWS CLI 구성

  • 위에 복사한 AWS CLI 앱의 Client ID를 아래와 같이 AWS Account Federation 앱에 설정합니다. > "AWS Account Federation" → "Sign On" → "Settings"에서 "Edit" 선택

    > "Allowed Web SSO Client" 항목에 AWS CLI 앱의 Client ID를 입력합니다.

  • 사용자 CLI 접속하는 사용자는 AWS Account Federation 앱과 동일하게 Assign 되어 있어야 합니다. (그룹을 통한 사용자 Assign 구성을 권장 드립니다.)

1.3 "okta-aws-cli" tool 설치 및 구성

  • 기존 사용자 AWS CLI 접속의 "aws cli" tool이 아닌 "okta-aws-cli" tool을 통해 접속하여야 Okta 인증 구성이 가능합니다.

circle-info

"okta-aws-cli" tool 설치가 필요하며, 아래 설치 가이드 링크를 참고 바랍니다.

Windows 는 "Chocolatey" 통해 설치arrow-up-right / Mac OS는 "Homebrew" 통해 설치arrow-up-right

  • "okta-aws-cli" 설치 (CMD 관리자 권한 실행 필수)

설치 내역 확인
  • "okta-aws-cli" 명령어 및 사용법

1.4 사용자 경험 (인증 및 권한)

circle-info

해당 Okta CLI의 인증은 AWS Account Federation 앱을 통한 SAML 구성으로 Assume Role이 부여 됩니다.

  • "aws cli" tool이 아닌 "okta-aws-cli" tool을 사용하기 때문에 에 구성된 "aws cli"에서 "credentials" 정보는 아래와 같이 확인하시고, 모든 사용자에 대해 Okta 인증을 통해 AWS CLI 접속으로 전환한다면 "credentials" 정보에 대한 삭제 여부를 검토하시기 바랍니다.

    • 기존 AWS CLI 연결에 대한 "aws configure" AWS 인증 정보 구성 체크

      • 명령어 : aws sts get-caller-identity

        "aws cli" tool 설치 되어 있어도 aws 인증 구성은 안되어 있는 상태를 확인하는 사항
  • "okta-aws-cli"를 통한 인증

    • 명령어 : okta-aws-cli web --oidc-client-id {AWS CLI 앱 Client ID} --aws-acct-fed-app-id {AWS Account Federation Application ID} --org-domain {subdomain}.okta.com -z

      Okta 인증을 위한 URL 복사

    • 복사한 URL을 인터넷 브라우저로 연결하여 "다음" 선택합니다.

    • 사용자 인증을 진행 합니다.

    • 인증이 완료 되면 "장치 활성화 됨" 결과가 확인되며 브라우저를 닫습니다.

    • 그리고 아래와 같이 "credentials"의 인증 구성이 완료 됩니다.

  • Okta 인증 구성 확인 (Assume Role)

    • 명령어 : aws sts get-caller-identity

    • "credentials" 정보 확인

  • 최종 Okta의 Assume Role을 통해 AWS 명령어 정상 실행여부 확인

circle-info

사용자의 Multi Account / Role은 아래와 같이 선택할 수 있습니다.

  • 다수의 Account / Role이 존재하는 사용자는 아래 인증 과정처럼, "Tab" 버튼 또는 "화살표" 방향으로 선택하여 사용자가 원하는 Account의 Role을 할당 받을 수 있습니다.

  • "credentials"에는 한가지 Role만 AssumeRole 구성 및 업데이트 됩니다.


2. AWS IAM Identity Center

circle-info

2.1 "aws cli" tool에 SSO 설정

  • AWS CLI 설치 및 버전 확인

    • 명령어 : aws --version

  • AWS CLI 에 SSO 프로파일 설정

    • 명령어 : aws configure sso

      • SSO session name (Recommended): okta

      • SSO start URL [None]: {AWS access portal 로그인 URL}

      • SSO region [None]: {AWS Identity Center 구성 region}

      • SSO registration scopes [sso:account:access]: 무시(엔터)

    - AWS에서 "AWS access portal 로그인 URL", "AWS Identity Center 구성 region" 확인 방법

circle-info
  • Okta 대시보드에서 AWS IAM Identity Center를 통해 "AWS access portal 로그인 URL", "AWS Identity Center 구성 region" 확인 방법

    • Okta 대시보드에서 "AWS IAM Identity Center" 접속

    • AWS CLI의 SSO 프로파일 구성할 AWS Account에 "액세스 키" 선택

    • "SSO start URL", "SSO region" 정보를 확인할 수 있습니다.

  • 입력 완료되면 아래와 같이 인증 링크가 생성되며, 브라우저를 통해 AWS CLI SSO 구성의 인증을 진행합니다.

    • 사용자 인증 (AWS와 Okta 앱에 인증하려는 사용자가 생성되고 할당되어 있어야 합니다.)

    • "엑세스 허용" 선택

    • 권한 승인 완료

  • 인증이 완료 되면 아래와 같이 SSO 프로파일의 추가 설정 단계가 진행 됩니다.

    • Default client Region [None]: {기본 Client 접속 region}

    • CLI default output format (json if not specified) [None]: {json 권장}

    • Profile name [AWS Role-AWS Account]: {선택사항} > 사용자가 다수의 Account와 Role이 할당되어 있어 각 역할에 따른 SSO 분리 구성이 필요하다면, 정확한 식별을 위해 명시하는 것을 권장 드립니다.

2.2 AWS SSO 프로파일을 통한 AWS CLI 실행

  • 위에서 생성 된 SSO 프로파일에 대해 정상적으로 구성되었는지 확인 합니다.

    • 명령어 : aws sts get-caller-identity --profile {SSO Profile Name}

  • SSO 프로파일의 Account와 Role에 의해 AWS CLI 명령 실행 (aws s3 ls)

    • 명령어 : aws s3 ls --profile {SSO Profile Name}

2.3 참고 사항

1

AWS CLI 명령어 실행할 때마다 계속 "SSO 프로파일 옵션"(--profile)을 뒤에 붙여 주어야 하나요?

  • 정확히 어떤 Account의 역할을 통해 AWS CLI 명령어을 실행하는지 확인을 위해 옵션을 사용하는 것이 좋지만, 많은 명령어 실행 작업과 고정된 Account의 역할을 사용한다면 기본 SSO 프로파일로 설정하여 옵션을 제거하여 AWS CLI 명령을 실행 할 수 있습니다.

    • 1번 방법 : 현재 Shell(PowerShell / CMD)에 기본값 구성 (다른 Shell은 적용 안됨)

      • Windows 명령어: set AWS_PROFILE={SSO Profile Name}

      • Mac OS / Linux 명령어 : export AWS_PROFILE={SSO Profile Name}

    • 2번 방법 : AWS CLI의 Config를 통한 기본 프로파일 구성

      • Path : C:\Users\{사용자}\.aws

      • File : config

      • Config 수정

        • 아래와 같이 기본 값으로 구성할 "SSO 프로파일"에 대해 복사 후 "SSO 프로파일" 이름을 "default" 로 변경합니다.

        • "default" 변경 됨에 따라 SSO 프로필 옵션이 자동으로 적용되어 AWS CLI 명령어 실행이 가능합니다. (새로운 Shell을 실행하여도 "SSO 프로파일" 옵션이 계속 고정 적용 됨)

2

AWS CLI에 SSO 구성 삭제 하는 방법은 없나요?

  • "C:\Users\{사용자}\.aws" 경로에 있는 모든 파일을 삭제 후 "aws configure" 통해 다시 인증 구성을 하시면 됩니다. (빨간 박스 항목 전부 삭제)

3

SSO 인증한 임시 Access Key에 대한 세션은 어떻게 관리되나요?

  • Okta SSO 인증 정보는 "~.aws\cli\cache" 경로에 json 파일로 생성됩니다.

  • 인증 완료되고 임시 AccessKey의 만료시간은 1시간이며, 이는 AWS IAM Identity Center에서 구성한 권한 세트의 세션 시간을 기준으로 설정됩니다. 이는 AWS IAM Identity Center에서 구성한 Okta IDP 정보만 인증 요건으로 처리되며, Okta의 정책 세션 시간으로 결정되지 않습니다.

Last updated