AWS λΈλ‘κ·Έμ λ°λ₯΄λ©΄ U2Fλ μ΄μ μ½μ λ‘κ·ΈμΈμ λν΄ μ§μλ©λλ€.
https://aws.amazon.com/blogs/security/use-yubikey-security-key-sign-into-aws-management-console/
λμ€ν¬/λ©λͺ¨λ¦¬μ μλͺ μ΄ κΈ΄ ν ν°μ 보μ νλ λμ ννμ¬ λͺ λ Ήμ μνν μ μλλ‘ aws-cliμμ μ΄λ₯Ό μ§μνλ κ²½λ‘κ° νΉν μ€μν©λλ€.
AFAIK, U2Fλ μΌλ°μ μΌλ‘ μΉ λΈλΌμ°μ μμλ§ μλν©λλ€. CLIμμ μ΄λ»κ² μ¬μ©λ κ²μΌλ‘ μμνμλκΉ? λΈλΌμ°μ λ₯Ό μ€ννμκ² μ΅λκΉ?
@JensRantil μλμ, λͺ¨λ μ’ λ₯μ μ ν리μΌμ΄μ μ U2F ν ν°κ³Ό μνΈ μμ©ν μ μμ΅λλ€.
μΆμ²: μ λ λ°λΉμμμ libu2f-*
λ° pam-u2f
λ₯Ό μ μ§ν©λλ€ ;)
API μ‘μΈμ€μλ μμ§ U2Fκ° μ§μλμ§ μλ κ² κ°μ΅λλ€.
U2F 보μ ν€λ‘ MFA λ³΄νΈ API μ‘μΈμ€λ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ¦, μ΄ νΌλλ°±μ μλΉμ€ νμ νμ€ν μ λ¬νμ΅λλ€. λ΄ κ²½νμ λ°λ₯΄λ©΄ U2Fλ λ€λ₯Έ λ λ²μ§Έ μμλ³΄λ€ 100000λ°° λ μ μ©νλ―λ‘ λ΄ μμ μ μ©λλ‘λ λ³΄κ³ μΆμ΅λλ€.
ν κ°μ§ μ£Όμν μ μ u2f ν ν°κ³Ό μνΈ μμ©νκΈ° μν΄ c μ’ μμ±μ κ°μ ΈμμΌ νλ€κ³ νμ νκΈ° λλ¬Έμ μ΄κ²μ΄ V2 κΈ°λ₯μ΄μ΄μΌ νλ€λ κ²μ λλ€.
@JordonPhillips μ°Έκ³ λ‘ Python U2F νΈμ€νΈ λΌμ΄λΈλ¬λ¦¬κ° μμ΅λλ€. μ체 100% Pythonμ΄μ§λ§ IIRCκ° libusb
λ° libudev
μ¬μ©νλ hidapi
μ μμ‘΄ν©λλ€.
OTOH, μ΄λ―Έ λͺ¨λ μ£Όμ λ°°ν¬νμμ μ¬μ©ν μ μμΌλ―λ‘ ν° λ¬Έμ κ° λμ§ μμ΅λκΉ?
λν (U2F μ¬μ©κ³Ό λ§μ°¬κ°μ§λ‘) μ¬μ©μκ° U2F μ₯μΉμ μνΈ μμ©ν μ μμ΄μΌ ν©λλ€. Yubicoλ task-desktop
μ μ’
μμ±μΈ libu2f-udev
(C λΌμ΄λΈλ¬λ¦¬λ₯Ό κ°μ Έμ€μ§ μκ³ μ€μΉν μ μλλ‘)λ‘ Debianμ μ 곡ν libu2f-host
udev κ·μΉ μ
μ€νΈλ¦Όμ μ μ§ κ΄λ¦¬ν©λλ€. (Debian 10 "buster"λΆν° μμ) λλΆλΆμ μ¬μ©μλ κΈ°λ³Έμ μΌλ‘ μ€μΉν©λλ€. μ€νΈλ μΉ(νμ¬ λ°λΉμ μμ )μμ U2Fμ© udev κ·μΉμ udev
ν¨ν€μ§λ‘ μ 곡νμΌλ―λ‘ μ¬κΈ°μμλ μ¬μ©ν μ μμ΅λλ€.
μμ½: λ°λΉμμ jessie μ΄νμ U2F μ₯μΉμ λν μ¬λ°λ₯Έ κΆνμ΄ μμ΄μΌ νλ©°(1λ
μ μ μΆμλ¨) λͺ¨λ λ°λΉμ νμλ¬Όλ λ§μ°¬κ°μ§μ¬μΌ ν©λλ€(U2Fλ₯Ό κΉ¨κΈ° μν΄ λ
Έλ ₯νμ§ μλ ν...)
μ΄κ²μ μ μκ² ν° λμμ΄ λ κ²μ λλ€. ν루μ 10~20λ²μ© ν΄λν°μ κΊΌλ΄ TOTPλ₯Ό 볡μ¬νλ κ²μ μ¬λ―Έκ° μμ΅λλ€. π λμ Yubikeyλ₯Ό νν μλ§ μλ€λ©΄ aws-cli κ²½νμ΄ ν¨μ¬ λ _λ무__ μ¦κ±°μμ§ κ²μ λλ€.
@nbraud κ·Έλ€μ΄ μ¬μ©νλ python μΈν°νμ΄μ€λ Linux ν μ μ 곡νμ§ μλ κ² κ°μΌλ―λ‘ μ€μΉνλ €λ©΄ μ¬μ©μμκ² μ»΄νμΌλ¬κ° μ€μΉλμ΄ μμ΄μΌ ν©λλ€. μ΄κ²μ νμ¬ cliλ₯Ό μ€μΉνκΈ° μν μꡬ μ¬νμ΄ μλλ―λ‘ ν΄λΉ λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°νλ κ²μ λ§μ μ¬μ©μμκ² μ£Όμ λ³κ²½ μ¬νμ΄ λ κ²μ λλ€.
@JordonPhillips λΈλ μ΄νΉ 체μΈμ§ λμ κ³Ό κ΄λ ¨νμ¬... μ΄μ±μ μΈ μ¬μ©μκ° λ λͺ¨νμ μΈ μ¬μ©μλ₯Ό μν΄ μΌμ μ€λ¨νμ§ μκ³ μ΄κΈ°μ μ΄μ μ μ»μ μ μλ λͺ κ°μ§ μ κ·Ό λ°©μμ μμν μ μμ΅λλ€.
v1μμ μ΄λ₯Ό μ νμ μ’ μμ±μΌλ‘ λ§λ λ€μ μ λ§λ‘ κ΄μ¬μ΄ μλ μ¬λλ€μ μ΄λ₯Ό νμ±ννκΈ° μν΄ νΉμ νλκ·Έλ‘ μ»΄νμΌν μ μμ΅λλ€. μ΄λ¬ν λ°©μμΌλ‘ κ·Έλ€μ κΈ°λ³Έμ μΌλ‘ κ²°κ΅ v2 ν΄λΌμ΄μΈνΈμ μΌλΆκ° λ "미리보기"λ₯Ό μ νν©λλ€.
U2F μ‘°κ°μ λ³λμ λ°μ΄λλ¦¬λ‘ λΆν νκ³ λ°νμμ μ‘΄μ¬λ₯Ό κ°μ§ν©λλ€. κ·Έλ° λ€μ U2Fμ ν¨κ» AWS CLIλ₯Ό μ¬μ©νλ €κ³ νλ μ¬μ©μλ "μ΄ λ€λ₯Έ λꡬλ₯Ό μ€μΉνμμμ€"λΌλ λ©μμ§κ° νμλ©λλ€. μλ₯Ό λ€μ΄ Macμμλ ν볡μμ brew install aws-cli-u2f
λ¨μ΄μ Έ μμ΅λλ€. π
λ€, μ΄ κΈ°λ₯μ μ¬μ©νλ €λ©΄ μμ€μμ μ»΄νμΌ(compile-from-source) λͺ¨λμ μ€μΉνλ κ²μ΄ μ’μ΅λλ€. κ±°μ νμ μ»΄νμΌλ¬κ° μ΄λ―Έ μλ κ°λ°μ μ»΄ν¨ν°μμλ§ νμνκ³ μ΄μ¨λ μλ²μμλ νμνμ§ μμ΅λλ€.
νμ΄μ¬-U2F νΈμ€νΈμ λμμ΄ λ κ² νμ΄μ¬ fido2 μ USB HID μλ¨μ C λΌμ΄λΈλ¬λ¦¬λ₯Ό νμμμ λΉμ μ μ»μ λ§νλ μ λ°μ λ°ν΄ μνΈν λΌμ΄λΈλ¬λ¦¬λ₯Ό νμλ‘ ...
μ΄μ―€μμ μ¨μ μ°Έκ² μ΄ π
μ΄ λ¬Έμ λ₯Ό μ΄ν΄νλ ν STS/IAMμ μ΄ λ¬Έμ λ₯Ό μ§ννκΈ° μ μ 보μ ν€μ λν API μ§μμ MFA ν ν°μΌλ‘ μ»μ΄μΌ ββν©λκΉ?
μ΄ λ¬Έμ λ₯Ό μ΄ν΄νλ ν STS/IAMμ μ΄ λ¬Έμ λ₯Ό μ§ννκΈ° μ μ 보μ ν€μ λν API μ§μμ MFA ν ν°μΌλ‘ μ»μ΄μΌ ββν©λκΉ?
λꡬλ μ§ μ΄κ²μ λν΄ λ°ν μ μμ΅λκΉ? νμ€ν μμ§ μ§μλμ§ μλλ€λ©΄ κ·Έκ²μ λͺ¨νμ΄ λλ©΄ ...?
νΈμ§νλ€:
λ³λ‘ μ μ©νμ§ μμ λ²μ μ ꡬννμ§λ§ μ무λ μ¬μ©νμ§ μμκΈ° λλ¬Έμ νμ¬μμ κ³ κ° μ€ λꡬλ κΈ°λ₯μ κ΄μ¬μ΄ μλ€κ³ κ°μ νλ κΈ°λ°ν μ¬λ‘ μ€ νλλ‘ λ°νμ§μ§ μλλ‘ νμμμ€.
Amazon μ½μμ λ‘κ·ΈμΈν λ μΉ UIλ₯Ό μ¬μ©νμ§ μμ΅λλ€. μ²λ¦¬ν΄μΌ νλ κ³μ μ΄ μ¬λ¬ κ° μκΈ° λλ¬Έμ λͺ¨λ CLI κΈ°λ°μ
λλ€. κ·Έλ¦¬κ³ λ΄κ° μΉ UIλ₯Ό μ¬μ©νμ¬ λ‘κ·ΈμΈμ _did_ μ¬μ©νλλΌλ, U2Fμ ν¨κ» μ¬μ©ν κΈ°μ‘΄ κ³μ μ _μ€λ³΅ κ³μ _μ κ³μ μ¬μ©ν΄μΌλ§ ν©λλ€. μλνλ©΄ μ¬μ ν μ΄μ Google/LastPassλ₯Ό μ¬μ©ν΄μΌ νκΈ° λλ¬Έμ
λλ€. /λͺ¨λ aws-cli
λν μΈμ¦μ.
κ·Έλμ... AWSμ U2F μ§μμ λ΄κ° _μ λ§_ μ΄κ΄ν _μ μ¬_κ° μμ§λ§, CLI μ§μ μμ΄λ μμ§ κ±΄λ릴 κ°μΉκ° μμ΅λλ€. λλ λ§μ μ¬λλ€μ΄ κ°μ λ°°μ μλ€κ³ μμν©λλ€.
@jeffparsons λ CLI/SDKμ© U2F MFAκ° μ λ§λ‘ νμνλ€λ λ° μ μ μΌλ‘ λμν©λλ€. λλ κ·Έλ€μ΄ libusb/python-fido μ κ·Ό λ°©μμ νλ κ²μ κ±°λΆν κ²μ΄λΌκ³ νμ ν©λλ€. μλνλ©΄ κ·Έκ²μ΄ ruby/java ect SDKμμ μ 맀νλμ§ μκΈ° λλ¬Έμ λλ€. μν°μΉ μ±λ¦°μ§ μλ΅μ΄ μλ U2Fλ κ½€ 보νΈμ μΌ κ²μ λλ€.
btw λ€λ₯Έ κ³μ μ λν μν μ κ°μ νμ¬ μΉ μ½μμμ κ³μ μ λ§€μ° μ½κ² μ νν μ μμ΅λλ€.
μ²λΌ:
https://signin.aws.amazon.com/switchrole?roleName=SomeAdminRole&account=YourAccountNumberOrAlias
보λ€:
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html
κ·Έλ° λ€μ νμ΄μ§ μ€λ₯Έμͺ½ μλ¨μ μ¬μ©μ/κ³μ λλ‘λ€μ΄μμ μν μ νκΈ°λ₯Ό λ³Ό μ μμ΅λλ€.
μμ μ΄ λ μμ λκ°λ₯Ό νκ³ μμμ§λ... https://gist.github.com/woowa-hsw0/caa3340e2a7b390dbde81894f73e379d
μ¬κΈ°μ μμ£Ό μ’μ μ루μ μ΄ μμ΅λλ€. https://github.com/kreuzwerker/awsu
λμΌν U2Fλ₯Ό μ¬μ©νλ λ³λμ idpλ‘ μ¬λ¬ λ€μ€ κ³μ μ€μ μΌλ‘ μμ
νλ κ²μ μ μκ² μμ²λ μκ³ λ₯Ό λμ΄μ€ κ²μ
λλ€.
λν v1μμ 미리 λ³΄κΈ°λ‘ κ°μ Έμ€κΈ° μν΄ μΆκ° μ’
μμ±μ μ€μΉ/μ»΄νμΌνλ λ° λ¬Έμ κ° μμ΅λλ€.
aws μΈ‘μ λ¬Έμ μ λν μμ§μμ΄ μμ΅λκΉ?
κ·Έ κ°μΉλ₯Ό μν΄ aws-vaultλ U2F μ§μμμ λ³ν©μ μλΉν κ°κΉμ΄ κ² κ°μ΅λλ€: https://github.com/99designs/aws-vault/pull/316
μ¦, 곡μ AWS CLI λꡬμ κΈ°λ³Έ U2F μ§μμ μΆκ°νλ κ²μ μ λμ μΌλ‘ μ°¬μ±ν©λλ€.
κ·Έλ§ν κ°μΉκ° μκΈ° λλ¬Έμ aws-vaultλ U2F μ§μμμ λ³ν©μ μλΉν κ°κΉμ΄ κ² κ°μ΅λλ€. 99designs/aws-vault#316
μλμ, κ·Έκ²μ λ¨μ§ Yubikeyλ₯Ό μ¬μ©νμ¬ TOTP ν ν°μ μμ±νλ κ²μ λλ€. Yubikeyλ₯Ό μ¬μ©ν μ μλ ν΄κ²° λ°©λ²μ΄μ§λ§ U2Fλ μλλλ€.
(μ΄κ²μ awsu
κ° νλ κ²κ³Ό κ°μ΅λλ€.)
awscli
μ μ 체 MFAλ μ€μ νκΈ°κ° μ΄λ ΅κ³ yubikey μ§μμ΄ λΆμ‘±ν΄λ λμμ΄ λμ§ μμ΅λλ€.
2019λ
MFAλ μ΅μ²¨λ¨ κΈ°λ₯μ΄ λμ΄μλ μ λ©λλ€.
μ΄μ λν μ§μ μ΄ μμ΅λκΉ?
λ°©κΈ μ΄κ²μ λΆλͺμ³€μ΅λλ€. cliμμ μ§μνμ§ μμΌλ €λ©΄ μΉ μ½μμμ Yubikey μ§μμ μ κ±°νμμμ€. Googleμμ μ΄ νλͺ©μ κ²μνκ³ AWSκ° κ΄κ³ νλ λ΄μ©μ μ§μνμ§ μλλ€λ κ²μ νμΈνλ κ²μ μμ²λ μκ° λλΉμ λλ€.
μ΄ λ¬Έμ κ° 440μΌ λμ μ΄λ € μκ³ μμ§ ν΄κ²°λμ§ μμλ€λ κ²μ κ½€ μ°μ€κ½μ€λ¬μ΄ μΌμ λλ€.
CLI μ§μμ μμ μΈκΈνλ―μ΄ λμ΄ νκ°λ©λλ€.
μλ νμΈμ, https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.htmlμ μ¬μ©νμ¬ λͺ¨λ μΈκ° μ¬μ©μμ λν΄ MFAλ₯Ό μννκ³ μΆμ΅λλ€. λ λμ μ루μ ) νμ§λ§ μ΄μ λ€μ μ€ νλλ₯Ό μνν΄μΌ ν©λλ€.
) μμ΄λμ΄λ₯Ό μμ ν ν¬κΈ°νκ±°λ
b) λͺ¨λ μ¬λμ΄ U2F μ¬μ©μμ TOTPλ‘ λ€μ΄κ·Έλ μ΄λνλλ‘ ν©λλ€.
IAMμ΄ μ¬λ¬ MFA μ₯μΉλ₯Ό μ§μνμ§ μλλ€λ μ¬μ€λ λμ λλ΄μ λλ€...
μ΄μ κ±°μ 2020λ μ λλ€. νΈλ¦¬νκ³ μμ ν (μ½κΈ°: U2F) MFA μ루μ μ μ¬μΉνμ΄ μλλΌ νμνμ λλ€. νΉν μ μμ μΈ νμμκ° μ¬κ°ν μ¬μ μ νΌν΄λ₯Ό μ ν μ μλ μμμμ.
AWS, μ λ°, μ λ°, μ λ°, ν¨κ» νλνκ³ μνκ³(U2Fλ μ§μνμ§ μλ CLI, λͺ¨λ°μΌ μ±, AWS SSO) μ 체μμ MFA μ§μμ κ°ννκΈ° μν΄ λ Έλ ₯νμμμ€!
IAMμ΄ μ¬λ¬ MFA μ₯μΉλ₯Ό μ§μνμ§ μλλ€λ μ¬μ€λ λμ λλ΄μ λλ€...
μ λ§ λΆλλ½μ΅λλ€. νλμ μ₯μΉλ§ λ±λ‘νλ κ²μ μ λ§ λμ μ΅κ΄μ΄λ―λ‘ Amazonμ μμ μ΄ λ¬Έμ λ₯Ό μ΅λν 빨리 μμ νμμμ€!
μ΄ λ¬Έμ κ° 440μΌ λμ μ΄λ € μκ³ μμ§ ν΄κ²°λμ§ μμλ€λ κ²μ κ½€ μ°μ€κ½μ€λ¬μ΄ μΌμ λλ€.
κ·Έκ²λ³΄λ€ λ λμλ€. 2013λ μ Amazonμ λκ΅°κ°λ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
λΆννλ νμ¬λ‘μλ κ³μ λΉ νλμ MFAλ§ κ°μ§ μ μμ΅λλ€.
κ·Έλ¬λ λλ μ΄κ²μ ν₯ν κ°λ°μ μν κΈ°λ₯μΌλ‘ κ³ λ €νκΈ° μν΄ κ°λ° νκ³Ό ν¨κ» μ κΈ°νμ΅λλ€.
https://forums.aws.amazon.com/thread.jspa?threadID=137055
νμ΄ λ°μ μλ μκ³ κ·Έλ μ§ μμ μλ μλ€λ κ²μ μ΄ν΄νμ§λ§, μ무λ μ΄ λ¬Έμ μ λν΄ λ΅μ₯μ νμ§ μλλ€λ μ¬μ€μ΄ μ λ₯Ό κ±±μ νκ² ν©λλ€. μ΄κ²μ λ³λͺ ν μ μλ μΈλ ₯ λΆμ‘±, μ μκΈ μ€ν μμ€ νλ‘μ νΈκ° μλλΌ AWS μ체μ λλ€.
491μΌ, 500μ μ΄νμΈμ μ΄μ! :μ΄νμΈ: :confetti_ball:
λλ Amazonμ΄ $κ° μλ GOV νλ‘μ νΈμ μ λ§λ‘ μ§μ€νκ³ μλ€κ³ κ°μ ν©λλ€. μ΄ μ€λ λλ λ΄κ° μΌλ°μ μΌλ‘ λꡬμκ²λ AWS μ¬μ©μ κΆμ₯νμ§ μλ μ΄μ μ€ νλμ
λλ€.
λ¬Όλ‘ μ΅μ²¨λ¨μ΄λ μμ λ μμμ§λ§ μμ¦μ.. κΈ°λ³Έμ μΈ κΈ°λ₯μ΄ λΆμ‘±ν©λλ€. μ£Όμ μμ λ²μ΄λ¬μ§λ§ λ€λ₯Έ μλ Route 53μ΄ μ¬μ ν DNSSECλ₯Ό μ§μνμ§ μλλ€λ κ²μ΄λ―λ‘ μ¬κΈ°μμ μμνκ² μ΅λλ€. μ, κ·Έλ¦¬κ³ AWS ꡬνμ "λ©ν°"κ° μκΈ° λλ¬Έμ MFAλ₯Ό SFAλΌκ³ λΆλ¬μΌ ν©λλ€.
νμΈμ ν΄μ λ―Έμνμ§λ§ μ€μ λ‘ μ΄ κΈ°λ₯μ μνλ 보μ λ΄λΉμλ₯Ό μ μΈνκ³ λ μ무λ μ΄ μ€λ λλ₯Ό λ³΄μ§ μμ κ²μ
λλ€.
500λͺ
λ¬μ±κΉμ§ λ©°μΉ μ λ¨μμ΅λλ€ :) !
μ΄ μΆκ°λμμΌλ©΄ μ λ§ μ’κ² μ΅λλ€. λλ ν΄λν°μ΄ λ§€μ° μ°λ§νλ€λ κ²μ μκ³ AWS μλΉμ€μ μνΈ μμ©ν λ μκ°λΉ μ¬λ¬ λ² ν΄λν°μ κΊΌλ΄κ³ μΆμ§ μμ΅λλ€.
μ΄κ²μ λ©°μΉ μ μ μ λ°μ΄νΈλμμ΅λλ€ - https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/
κ·Έκ² λκ΅°κ°μκ² λμμ΄ λλμ?
κ·Έκ² λκ΅°κ°μκ² λμμ΄ λλμ?
μ¬νκ²λ, μλλλ€. IMHOλ AWSκ° ν ν° μ½λλ₯Ό μ¬μ©νκΈ° μν΄ λ³΅μ‘ν μ€ν¬λ¦½νΈκ° νμνλ€λ λ λ€λ₯Έ λ¬Έμ μ
λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ νμ¬ aws-mfa
python μ€ν¬λ¦½νΈ PyPi λͺ¨λμ μ¬μ©ν©λλ€.
νμ§λ§ @chris-batemanμ μκ°ν΄μ£Όμ
μ κ°μ¬ν©λλ€!
μ΄κ²μ λ©°μΉ μ μ μ λ°μ΄νΈλμμ΅λλ€ - https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/
ν΄λΉ κΈ°μ¬ νλ¨μ "κ°μ ν μ μλ μ¬νμ΄ μμ΅λκΉ? μλ €μ£Όμμμ€" λ²νΌμ΄ μμ΅λλ€. μ΄ λ²νΌμ λ°λμ λλ¬μΌ ν©λλ€.
μ λͺ«μ λ€νκ³ "μλ €μ£ΌκΈ° λΆλΆ"μ λκΈμ λ¨κ²Όμ΅λλ€. μ΄ κΈ°λ₯μ΄ κ΅¬νλλ€λ©΄ μ λ λ§€μ° κΈ°μ κ²μ λλ€.
@steinybot μ κ²μ
μμ§ κ΅¬νλμ§ μμλ€λ μνκΉμ΄ λκΈ μΆκ°
2κ°μλ μ± μλμ΄ 2μ£Όλ μ΄ λ€κ°μ΅λλ€. μ΄μ κ°κΉμμ§κ² μ£ ? μ€λ₯Έμͺ½?
μ’μ μμ: aws-vaultλ₯Ό μ¬μ©νμ§ μλλ€λ©΄ μ¬μ©ν΄μΌ ν©λλ€. κ·Έλ€μ λ°©κΈ Yubikey μ§μμ λμ
νμ΅λλ€. TOTPλ₯Ό μ§μνλ yubikeyκ° μλ κ²½μ° λ΄λΆμ MFA μ½λλ₯Ό μΆκ°ν μ μμ΅λλ€. μ΄μμ μΈ κ²μ Amazonμμ κΈ°λνλ κ²μ΄μ§λ§ Jeffκ° λ λΆμκ° λλ λμμλ μλ§μ‘΄μ΄ μ κ²½ μ°μ§ μλλ€λ λ° λͺ¨λ λμν μ μμ΅λλ€.
μν λ±μ λν νλ₯ν μ§μμ΄ μμ΅λλ€. μ μΌλΆλ μ΄κ²μ΄ μ 3μ λꡬλΌλ κ²μ΄ μ¬νμ§λ§ μ€ν μμ€λ₯Ό μ’μνλ μ΄μ λ λ°λ‘ μ¬κΈ°μ μμ΅λλ€. μ΅μ
μ΄ μλ€λ κ²μ
λλ€.
λ§ν¬: https://github.com/99designs/aws-vault/blob/master/USAGE.md#using -a-yubikey
aws-vaultλ νλ₯νμ§λ§ U2Fκ° μλ TOTPλ₯Ό μ§μν©λλ€.
μ΄κ²μ μ€λ«λμ κΈ°λ€λ¦° νμ λλ μ΄μ https://github.com/kreuzwerker/awsuλ₯Ό μ¬μ©ν©λλ€.
@nbraud κ·Έλ€μ΄ μ¬μ©νλ python μΈν°νμ΄μ€λ Linux ν μ μ 곡νμ§ μλ κ² κ°μΌλ―λ‘ μ€μΉνλ €λ©΄ μ¬μ©μμκ² μ»΄νμΌλ¬κ° μ€μΉλμ΄ μμ΄μΌ ν©λλ€. μ΄κ²μ νμ¬ cliλ₯Ό μ€μΉνκΈ° μν μꡬ μ¬νμ΄ μλλ―λ‘ ν΄λΉ λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°νλ κ²μ λ§μ μ¬μ©μμκ² μ£Όμ λ³κ²½ μ¬νμ΄ λ κ²μ λλ€.
@jeffparsons κ° λ λ§μ μ’
μμ±μ κ°μ§ λ€λ₯Έ λ ν° λΌμ΄λΈλ¬λ¦¬ μ€ νλλ₯Ό μ¬μ©νλ κ²½μ° λͺ κ°μ§ ν©λ¦¬μ μΈ μ μ¬μ ν΄κ²° λ°©λ²μ μ§μ νμ§λ§, κ³ λ €ν΄μΌ ν λ μμ Python λΌμ΄λΈλ¬λ¦¬μΈ pyu2fλ μμμ μ§μ νκ² μ΅λλ€ . λν U2F ν€μ ν΅μ νκΈ° μν΄ κΈ°λ³Έ USB HID λΌμ΄λΈλ¬λ¦¬μ μμ‘΄νμ§λ§ νλμ Python μ’
μμ±: six
μμ΅λλ€. MacOS, Linux λ° Windowsμ νΈνλλ OS HID νΈμΆμ λν μ체 ctypes
κΈ°λ° λ°μΈλ©μ ν¬μ₯νκ³ "μΆ©λΆν" μ¬μ© μ¬λ‘λ₯Ό λ€λ£° κ²μ
λλ€.
μμ§ μμ
μ€μΈ μ¬λμ΄ μμ΅λκΉ? aws-cli
νμ μ΄ κΈ°λ₯μ νλ‘ν νμ
μ λν ν¨μΉλ₯Ό μλ½ν©λκΉ?
νΈμ§: IAM μ¬μ©μ κ°μ΄λ μμ μμΈν μ½μ ν U2Fκ° API μμ€μμ μ§μλμ§ μλ κ²μ²λΌ 보μ΄λ―λ‘ aws-cli
λνν U2F ν ν° μΈμ¦μ μ§μνλλΌλ GetSessionToken
λ° AssumeRole
μ²λΌ 보μ΄μ§ μμ΅λλ€
API μμ μ λν MFA 보νΈμ λ€μ μΈ‘λ©΄μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€.
- MFA 보νΈλ AssumeRole λλ GetSessionTokenμΌλ‘ κ°μ ΈμμΌ νλ μμ 보μ μ격 μ¦λͺ μ ν΅ν΄μλ§ μ¬μ©ν μ μμ΅λλ€.
- U2F 보μ ν€λ‘ MFA λ³΄νΈ API μ‘μΈμ€λ₯Ό μ¬μ©ν μ μμ΅λλ€.
λν @kiwimato μ μμ λ Όνμ
μ΄μμ μΈ κ²μ Amazonμμ κΈ°λνλ κ²μ΄μ§λ§ Jeffκ° λ λΆμκ° λλ λμμλ μλ§μ‘΄μ΄ μ κ²½ μ°μ§ μλλ€λ λ° λͺ¨λ λμν μ μμ΅λλ€.
μ΄κ²μ μλ³Έμ£Όμ ν λ‘ ν¬λΌμ΄ μλλΌ μννΈμ¨μ΄ κ°λ° μ€λ λλΌλ κ²μ μμλμμμ€. AWS νμ λ΄ κ²½νμ botocore
λ₯Ό μμ νλ λ° λ§€μ° λ°μμ΄ μ’μλ μ§μ ν μΈκ°μΌλ‘ ꡬμ±λμ΄ μμ΅λλ€. λ¬Έμ κ° μλ κ²½μ° λλΆλΆμ μ€ν μμ€ νΉμ±μ΄ λ¬Έμ ν΄κ²°μ κΈ°μ¬νκ±°λ μ΅μν λͺ κ°μ§ μ΅μ
μ λΈλ μΈμ€ν λ°νλ λ° λμμ΄ λ μ μμμ μΈμνμμμ€.
κ·Έλ¬λ κΈ°λ³Έ AWS API μ체λ MFAμ© TOTP μ΄μΈμ κ²μ μ§μνμ§ μλ κ²μΌλ‘ 보μ΄μ§λ§ μ΄ λ¬Έμ λ λ¨μν ν΄λΌμ΄μΈνΈ κΈ°λ₯μ μ§μνμ§ μλ aws-cli
λ³΄λ€ λ ν° λ¬Έμ μΌ μ μμ΅λλ€. APIκ° U2Fλ₯Ό μ§μνλ©΄ AWSκ° μ΄ ν°μΌμ λΆνλ € ν΄λΌμ΄μΈνΈ μ§μμ λ°μ μ μκΈ°λ₯Ό λ°λλλ€.
μ μ΄λ μ΄μ κ°μ μ루μ
μ κΈ°κΈ°μ ν΄λμ ν κ°μ 컨ν
μ€νΈ μ νμ λμμ΄ λ κ²μ
λλ€.
https://auth.com/
μ΄κ²μ λν ETAκ° μμ΅λκΉ? AWS cli μ¬μ©μ μν΄ μ’μ MFA μ¬λ‘λ₯Ό μ¬μ©νλ μ¬λμ΄ μ μΈκ³μ μΌλ‘ μ무λ μλ€λ μ¬μ€μ λ§€μ° μ°λ €μ€λ½μ΅λλ€.
AWS cli μ¬μ©μ μν΄ μ’μ MFA μ¬λ‘λ₯Ό μ¬μ©νλ μ¬λμ΄ μ μΈκ³μ μΌλ‘ μ무λ μλ€λ μ¬μ€μ λ§€μ° μ°λ €μ€λ½μ΅λλ€.
@james-calahan 그건 μ¬μ€μ΄ μλλλ€. MFAλ‘ μΈμ¦λ μν λ§ μν μ λν μ‘μΈμ€λ₯Ό μ νν©λλ€. μ:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: !Sub
- arn:aws:iam::${Account}:root
Action:
- sts:AssumeRole
Condition:
Bool:
aws:MultiFactorAuthPresent: 'true'
κ·Έλ° λ€μ aws-mfa λΌλ λꡬλ₯Ό μ¬μ©νμ¬ STSμμ μμ μ격 μ¦λͺ μ μ»κ³ AWS μ격 μ¦λͺ νμΌμ μ λ°μ΄νΈνλ κ²μ κ΄λ¦¬ν©λλ€. λμΌν λͺ©νλ₯Ό μν΄ STSμμ μνΈ μμ©μ κ΄λ¦¬νλ λ€λ₯Έ λ°©λ²μ΄ μμ΅λλ€.
μ΄ ν°μΌμ νΉν U2Fμ λν μ§μμ μΆκ°νλ λ° μ€μ μ λ‘λλ€.
@james-calahan 그건 μ¬μ€μ΄ μλλλ€. MFAλ‘ μΈμ¦λ μν λ§ μν μ λν μ‘μΈμ€λ₯Ό μ νν©λλ€.
μ΄κ²μ TOTPμμλ§ μλν©λλ€. TOTP μ격 μ¦λͺ
λ±μ νΌμ±νκΈ° μ½κΈ° λλ¬Έμ κ³ νμ§μ λ λ²μ§Έ μμλ‘ κ°μ£Όλμ΄μλ μλ©λλ€.
μ΄λ AWSκ° U2F λ° TOTP λλ°μ΄μ€λ₯Ό λ¨μΌ IAM μ¬μ©μμκ² λͺ¨λ λ±λ‘νλ κ²μ νμ©νμ§ μλλ€λ μ¬μ€λ‘ μΈν΄ λμ± μ
νλμμ΅λλ€. λ°λΌμ UI μ‘μΈμ€μ U2Fλ₯Ό μ¬μ©νλ €λ κ²½μ° cliμμ MFAλ₯Ό μ¬μ©ν μ μμ΅λλ€.
νμν μ¬μ©μλ₯Ό μν΄ λ κ°μ κ³μ μ λ§λλλ€.
CLI μ‘μΈμ€ μ μ© κ³μ μμ TOTPλ₯Ό νΌμ±νκΈ°κ° λ§€μ° μ΄λ ΅μ΅λλ€.
@craighurley
μ΄κ²μ ν΄κ²° λ°©λ² IMOμ λν΄ μ½κ° κ³Όλνκ² λ³΄μ
λλ€. μ½μμμ U2Fλ₯Ό μ¬μ©νλ €λ©΄ AWS μ‘°μ§μ 보μ κ΄λ¦¬λ₯Ό μν΄ 2κ°μ κ³μ μ μ μ§ν΄μΌ ν©λλ€.
U2Fλ₯Ό μ¬μ©νλ €λ μ΄λ€ νμ¬μκ²λ ν©λ¦¬μ μΈ μ루μ
μ΄ μλλΌκ³ μκ°ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
λꡬλ μ§ μ΄κ²μ λν΄ λ°ν μ μμ΅λκΉ? νμ€ν μμ§ μ§μλμ§ μλλ€λ©΄ κ·Έκ²μ λͺ¨νμ΄ λλ©΄ ...?
νΈμ§νλ€:
λ³λ‘ μ μ©νμ§ μμ λ²μ μ ꡬννμ§λ§ μ무λ μ¬μ©νμ§ μμκΈ° λλ¬Έμ νμ¬μμ κ³ κ° μ€ λꡬλ κΈ°λ₯μ κ΄μ¬μ΄ μλ€κ³ κ°μ νλ κΈ°λ°ν μ¬λ‘ μ€ νλλ‘ λ°νμ§μ§ μλλ‘ νμμμ€.
Amazon μ½μμ λ‘κ·ΈμΈν λ μΉ UIλ₯Ό μ¬μ©νμ§ μμ΅λλ€. μ²λ¦¬ν΄μΌ νλ κ³μ μ΄ μ¬λ¬ κ° μκΈ° λλ¬Έμ λͺ¨λ CLI κΈ°λ°μ λλ€. κ·Έλ¦¬κ³ λ΄κ° μΉ UIλ₯Ό μ¬μ©νμ¬ λ‘κ·ΈμΈμ _did_ μ¬μ©νλλΌλ, U2Fμ ν¨κ» μ¬μ©ν κΈ°μ‘΄ κ³μ μ _μ€λ³΅ κ³μ _μ κ³μ μ¬μ©ν΄μΌλ§ ν©λλ€. μλνλ©΄ μ¬μ ν μ΄μ Google/LastPassλ₯Ό μ¬μ©ν΄μΌ νκΈ° λλ¬Έμ λλ€. /λͺ¨λ
aws-cli
λν μΈμ¦μ.κ·Έλμ... AWSμ U2F μ§μμ λ΄κ° _μ λ§_ μ΄κ΄ν _μ μ¬_κ° μμ§λ§, CLI μ§μ μμ΄λ μμ§ κ±΄λ릴 κ°μΉκ° μμ΅λλ€. λλ λ§μ μ¬λλ€μ΄ κ°μ λ°°μ μλ€κ³ μμν©λλ€.