YubyKey의 두 가지 요소 인증과 함께 AWS 리소스에 대한 Terraform 수행 이야기

9107 단어 AWSTerraformtech
이 글은 terraform Advent Calendar 2021 16일째다.

TL;DR


  • AWS 리소스에 대해 로컬 환경에서 Terraform을 실행할 때 YubyKey로 두 가지 요소 인증을 받은 기사입니다.

  • Terraform/AWS Vault/ykman(YubyManager CLI) 사용

  • Terraform Enterprise/Terraform Cloud 및 CI/CD Piperline &tfmigrate에서 실행되는 환경에서 필요하지 않은 글입니다.

  • 투고자 환경은 맥OS다.다른 OS는 공식 문서를 참조하여 적절하게 교체하십시오.

  • YubyKey5C의 기사를 사용합니다.OATH가 유효한 모델이라면 사용할 수 있을 것 같아요.
  • 사용된 YubyKey가 OATH를 지원하는지 확인하는 방법은 뒤에 서술한다

  • AWS Vault의USAGE.md#using-a-yubikey에는 이 기사에서 해야 할 모든 일이 적혀 있습니다.
  • 배경.

  • 업무 중에 현지 환경의Terraform을 사용하여 고객의 공공 클라우드 환경을 방문할 때 안전 요구로 YubyKey 등 물리 설비의 2요소 인증을 요구할 때가 있다
  • AWS의 경우 AWS Management Console은 물리적 장치에 대한 두 가지 요소 인증을 지원하지만 Access Key(예: AWS CLI 및 Terraform)의 CLI 도구를 사용하여 액세스할 때는 물리적 장치를 지원하지 않으므로 AWS Vault와 같은 도구에 대한 도움말
  • 이 필요합니다.
  • Terraform Enterprise/Terraform Cloud와 CI/CD Piperline &tfmigrate를 사용하면 각자의 로컬 환경에서 고객 AWS 자원에 강력한 조작 권한을 부여하는 것을 배제할 수 있지만 이 정도에 이르지 않은 환경에서 참고할 수 있다
  • 이런 느낌으로.

  • aws-vault에서terraform을 실행할 때 터치유비가 있으면 이원 인증을 통과할 수 있다.OPP는 Yukman이 YubyKey 장치에서 획득한 것
  • ❯ aws-vault exec --prompt ykman ${YOUR_AWS_PROFILE} -- terraform apply
    Touch your YubiKey...
    
    aws_s3_bucket.log: Refreshing state... [id=${YOUR_AWS_PROFILE}]
    
    ..(snip)..
    

    사전 준비


    01. Terraform/AWS Vault 설정

  • Terraform: 공식 문서이쪽
  • AWS Vault: 공식 문서 여기 있습니다.
  • 이전에 AWS Vault에서 Terraform을 실행하기 전의 프로세스를 쓴 글입니다.필요시 참조: Terraform(또는 기타 CLI 도구·명령)으로 MFA 지원
  • 02. ykman 설치(YubyKey Manager CLI)

  • 공식 문서: YubiKey Manager CLI
  • Installation
  • brew install ykman
  • [필요한지 확인] ykman이 키보드의 입력을 감시할 수 있도록 허용
  • YubyKey Manager(ykman의 GUI 버전)가 필요한 권한이기 때문에 YubyKey Manager(ykman의 GUI 버전)라도 필요한 것으로 보이지만...확증이 없어 확인만 하면 업데이트
  • 시스템 환경 설정 > 보안 및 프라이버시 > 입력 감시 > "+"> 열린 창에 ykman의 디렉터리를 끌어다 놓고 추가
  • Finder로 ykman 디렉터리를 열고 ykman을 드래그하기: open $(dirname $(which ykman))
  • 03. 사용하는 YubyKey 장치가 OATH를 지원하는지 미리 확인

  • 사용한 YubyKey가 OATH를 지원하는지 확인
  • ykman --device $(ykman list --serials) info
  • OATH Ennabled가 되면 이 YubyKey 장치는 OATH
  • 에 대응한다
    $ ykman --device $(ykman list --serials) info
    Device type: YubiKey 5C
    ..(snip)..
    Applications
    ..(snip)..
    OATH        	Enabled
    ..(snip)..
    
  • 여러 YubbiKey를 사용하는 경우 "$(ykman list-serials)"를 임의의 YubyKey 시퀀스
  • 로 대체합니다.

    AWS Vault에서 YubyKey의 두 가지 요소 인증을 사용하여 Terraform은 AWS 리소스에 액세스합니다.

  • 프로세스는 AWS Vault의 USAGE.md#using-a-yubikey와 같습니다.
  • 본 보도에 이상한 점이 있으면 상기 내용을 참조하십시오
  • IAM User의 2원 인증 장치에 YubyKey 등록

  • YubyKey로 2요소 인증을 하고 싶은 IAM User의 ARN(A)
  • AWS Management Cosole에서 아래 설명한 내용을 참조하십시오.
  • IAM Management Cosole > Users > ${TARGET_IAM_User}
  • 이런 녀석: arn:aws:iam::${AWS_ACCOUNT_ID}:mfa/${TARGET_IAM_User}
  • AWS Management Constore에서 IAM User의 2요소 인증 장치 등록 화면을 열고 Secret Key(B)
  • IAM Management Cosole > Users > ${TARGET_IAM_User} > Security credentials > Assigned MFA device > Manage > Virtual MFA device > Continue > Show secret key
  • (A)를 OATH account으로 ykman에 등록
    $ ykman oath accounts add -t (A)
    Enter a secret key (base32): (B)
    
  • ykman을 통해 인증 코드 x2를 취득하고 AWS Management Console의 2요소 인증 장치 등록 화면에 로그인
  • 인증 코드는 다음과 같습니다.30초마다 코드를 업데이트하므로 비운 시간과 동시에 다음 작업을 수행하여 2원 인증 장치 로그인 화면의'3.Type two conceutive MFA codes below'에 로그인
  • $ ykman oath accounts code (A)
    
  • 여기까지 문제가 없다면 2요소 인증 디바이스 로그인 화면의'Assign MFA'버튼을 눌러 디바이스 등록
  • 완료

    AWS Vault에서 (A)의 Access Key와 연결된 AWS Profile을 작성하고 이중 요소 인증 기기를 연결합니다.

  • AWS Vault에서 (A) Access Key와 연결된 AWS 약관을 작성합니다.
  • 이번에'MFAby Yubikey'라는 AWS 프로필
  • 을 제작했습니다.
    $ aws-vault add MFAbyYubikey
    ※Access Key IDとSecret access keyを聞かれるので(A)のものを登録する
    
    MFA 장치의 ARN(B)이
  • 에 작성된 AWS 약관과 연결
  • 이번에'MFAby Yubikey'라는 AWS 프로필
  • 을 제작했습니다.
    $ vi ~/.aws/config
    [profile MFAbyYubikey]
    mfa_serial=${(B)}
    
  • 이것저것 섞으려면 그래도 돼
  • $ echo "mfa_serial=${(B)}" >> ~/.aws/config
    

    해보다

  • 다음과 같은 aws-vault의 MFA 장비를 통해 두 가지 요소 인증을 하고 terraform apply
  • 를 동시에 진행한다.
    $ aws-vault exec --prompt ykman MFAbyYubikey -- terraform apply
    Enter token for (A): ここにOTPを入力
    aws_s3_bucket.log: Refreshing state... [id=MFAbyYubikey]
    ..(snip)..
    
  • "Enter token for(A):"MFA 장치에서 OPP 입력
  • Ykman을 통한 OPP 획득
    $ ykman oath accounts code (A)
    Touch your YubiKey...
    (A)  xxxxxx
    
  • 두 가지 요소 인증 후
  • STS 세션의 유효기간이 끝나기 전까지는 아무것도 하지 않아도 (=YubyKey 버튼을 만지지 않아도 된다)terraform 명령
  • STS 세션이 만료되더라도 YubyKey 버튼을 만지면 Ykman은 OTP를 발급받아 AWS에 보낸다.편리
  • STS 세션의 유효 기간은 aws-valut list에서 확인할 수 있습니다.*마이너스인 경우 만료
    $ aws-vault exec --prompt ykman MFAbyYubikey -- terraform apply
    Touch your YubiKey... *ここでYubiKeyのボタンをタッチ
    
    いつものplanが表示されます
    
  • 끝말


    이 글은 각자의 로컬 환경에서 Terraform으로 AWS 자원을 조작할 때 YubyKey를 통해 2요소 인증을 하는 방법을 소개했다.
    나는 개인적으로 각자의 로컬 환경에서 AWS 자원을 조작할 수 있는 권한을 가지고 싶지 않다.본 보도의 내용은 시종 환경 정돈 전의 연락에 머물렀으며, 가능한 한 빨리 플랜/apply를 TFT/TFC, import/statemv에서 CI/CD+tfmigrate로 옮기기를 희망합니다.
    그럼 안녕히 계세요.

    좋은 웹페이지 즐겨찾기