μ¬μ©μ μΈμ¦κ³Ό κΆν ν΅μ λ μ¨νλ λ―Έμ€ νκ²½κ³Ό λλΆμ΄ ν΄λΌμ°λ νκ²½μμλ κ°μ₯ μ€μν 보μ μμμ΄λ€
μ΄ λλ¬Έμ AWSλ λμ± μμ νκ² μ¬μ©ν μ μλλ‘ AWS IAM κΈ°λ₯μ μ 곡νλ€
AWS IAMμ μ΄ν΄λ³΄κΈ° μ μ λ¨Όμ AWS IAM μμμ AWS 리μμ€κ° μ΄λ»κ² μμ±λκ³ κ΄λ¦¬λλμ§ μμ보μ!
AWS 리μμ€ μμ±νκ³ κ΄λ¦¬νκΈ°
AWS 리μμ€λ₯Ό λ€λ£¨λ λ°©λ²μ μ΄ν΄λ³΄μ!
AWS κ΄λ¦¬ μ½μ
AWS κ΄λ¦¬ μ½μμμλ AWS 리μμ€λ₯Ό μμ±νκ³ κ΄λ¦¬νλ λ° μ¬μ©ν μ μλ 'μΉ' κΈ°λ° μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ 곡νλ€
=> μ§κ΄μ μ΄κΈ° λλ¬Έμ AWS μ
λ¬Έ λ¨κ³μμ μ¬μ©νκΈ°μ κ΅μ₯ν νΈλ¦¬
(μμ μ€μ΅λ€μ AWS κ΄λ¦¬ μ½μμ΄λΌ μΉ κΈ°λ° GUI λ°©μμΌλ‘ μ§ννμ)
AWS λͺ λ Ήμ€ μΈν°νμ΄μ€
AWS λͺ λ Ήμ€ μΈν°νμ΄μ€(AWS CLI)λ AWS μλΉμ€λ₯Ό κ΄λ¦¬νλ ν΅ν© λꡬμ΄λ€
μ΄μ 체μ (μλμ°, macOS, 리λ μ€)μ μ€μΉνλ©΄ "μ Έ" νλ‘κ·Έλ¨μμ AWS μλΉμ€λ₯Ό μ¬μ©ν μ μλ€
=> λͺ λ Ήμ€ μΈν°νμ΄μ€λ νλ‘κ·Έλλ°μμλ AWS 리μμ€λ₯Ό λ€λ£° μ μλ€λ μ μ μκ³ μμ!
AWS μννΈμ¨μ΄ κ°λ° ν€νΈ
νΉμ μννΈμ¨μ΄λ₯Ό κ°λ°ν λ λμμ μ£Όλ κ°λ° λꡬ μ§ν©μ μννΈμ¨μ΄ κ°λ° ν€νΈ(SDK) λΌκ³ νλ€!
AWS SDKλ AWS 리μμ€λ₯Ό νλ‘κ·Έλλ°μ μΌλ‘ μ¬μ©νκΈ° νΈλ¦¬νλλ‘ μ 곡λλ λΌμ΄λΈλ¬λ¦¬λ€μ μλ―Ένλ€
=> μλ₯Ό λ€μ΄ AWS 리μμ€λ₯Ό μ¬μ©νλλ° μΈμ¦ λμμ΄ νμν λλ μ§μ νλ‘κ·Έλλ°ν΄μ ꡬνν΄μΌ νμ§λ§, AWS SDKλ₯Ό μ΄μ©νλ©΄ μ΅μνμ λ Έλ ₯λ§μΌλ‘λ λμμ ꡬνν μ μλ€
(AWS SDKλ νμ΄μ¬, Go, 루λΉ, μλ° λ± μ£Όμ νλ‘κ·Έλλ° μΈμ΄λ³λ‘ λ€μν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡ν¨)
AWS APIλ
μμ μ€λͺ ν AWS 리μμ€λ₯Ό λ€λ£¨λ λ°©λ²λ€μ AWS APIμμ μμ²μ λ°μμ¨λ€
κ·Έλ λ€λ©΄ AWS APIλ 무μμΌκΉ?
APIλ
API(Application Programming Interfaces)λ λ μ ν리μΌμ΄μ μ΄ μνΈ μμ©ν μ μκ² λμμ£Όλ 맀κ°μ²΄μ΄λ€
μ¦, APIλ₯Ό μ΄μ©νμ¬ λ μ ν리μΌμ΄μ μ΄ μλ‘ ν΅μ νλ©΄μ μ 보λ₯Ό μ£Όκ³ λ°μ μ μλ κ²μ΄λ€!
APIλ₯Ό μ¬μ©ν λλ λ κ°μ§ κ·μΉμ λ°λΌμΌ νλ€
1. μΈλΆμ 곡κ°λ API μλ²κ° μλ λλ μΈμ¦λ μ¬μ©μλ§ μ μν μ μκ² ν΄μΌ νλ€
=> μΈμ¦λ μ¬μ©μμΈμ§ νμΈνλ 'μΈμ¦'κ³Ό λ°μ΄ν°λ₯Ό λ΄λ €λ°μλ λλ€κ³ νκ°νλ 'μΈκ°'κ° νμνλ€
2. μμ²ν λ κ·μΉμ μ 리ν λ¬ΈμμΈ 'λͺ μΈμ'κ° νμνλ€
=> μ΅λ κΈμ μ μ νμ λͺ κΈμκΉμ§μΈμ§, μ λ¬νλ €λ λ°μ΄ν° μ νμ 무μμΈμ§ λ± μ ν΄μ§ κ·μΉμ΄ μμ²μμ λ΄κ²¨ μμ΄μΌ ν¨
μλ₯Ό λ€μ΄ 곡곡 λ°μ΄ν° ν¬νΈ μ¬μ΄νΈμλ 곡곡 λ°μ΄ν°λ₯Ό μ 곡ν μ μλ API μλ²κ° ꡬμ±λμ΄ μλ€
=> μ¬μ©μκ° λꡬλ ν¬νΈ μ¬μ΄νΈμ API μλ²μ λ°μ΄ν°λ₯Ό μμ²νλ©΄ μ 보λ₯Ό μ»μ μ μλ€
μ¬μ©μκ° νΉμ λ°μ΄ν°λ₯Ό μ‘°ννλ©΄ 곡곡 λ°μ΄ν° ν¬νΈ API μλ²μ API μμ²μ΄ μ λ¬λκ³ API μλ²λ μ¬μ©μμ λν μΈμ¦κ³Ό μΈκ°λ₯Ό νμΈν ν μΈμ¦λ μ¬μ©μλΌκ³ νλ¨νλ©΄ λͺ μΈμ κ·μΉμ νμΈνμ¬ μμ²ν λ°μ΄ν°μ κ²°κ³Ό κ°μ μ¬μ©μμκ² λ³΄μ¬ μ€λ€!
μΈμ¦(authentication) : μ¬μ©μκ° μ λ²ν μλͺ κ°μ κ°μ‘λμ§ νμΈνλ€
μΈκ° (authorization) : μΈμ¦μ΄ νμΈλ μ¬μ©μκ° API κΆνμ μνν μ μλμ§ νμΈνλ€
AWS ν΄λΌμ°λμμ μΈνλΌ, 보μ, λ°μ΄ν°λ² μ΄μ€, λΆμ, λ°°ν¬ λ° λͺ¨λν°λ§ λ± λͺ¨λ IT 리μμ€λ AWS API νΈμΆλ‘ μ μ΄ν μ μλ€
AWS APIλ
AWS APIλ μ¬μ©μλ μ ν리μΌμ΄μ μ΄ AWS μλΉμ€λ₯Ό μ¬μ©νκΈ° μν΄ λμμ£Όλ 맀κ°μ²΄μ΄λ€
μλ₯Ό λ€μ΄ μ¬μ©μκ° Amazon S3 μλΉμ€λ₯Ό μ¬μ©νλ €κ³ νλ€λ©΄ μ¬μ©μλ μμ² μ 보λ₯Ό AWS APIμ 보λΈλ€
μ΄λ AWS APIλ μ¬μ©μ μΈμ¦μ νμΈν ν μμ²μ΄ μ ν©νλ€κ³ νλ¨λλ©΄ Amazon S3 μλΉμ€μ μ λ¬νμ¬ μλΉμ€λ₯Ό μ²λ¦¬νκ² νλ€
μλ₯Ό λ€μ΄ AWS λͺ λ Ήμ€ μΈν°νμ΄μ€λ₯Ό μ΄μ©νμ¬ Amazon S3 λ²ν·μ μμ±νλ€κ³ κ°μ ν΄λ³΄λ©΄
AWS λͺ λ Ήμ€ μΈν°νμ΄μ€μμ λ²ν·μ μμ±νλ λͺ λ Ήμ΄λ₯Ό μμ±νλ©΄ AWS 리μμ€λ₯Ό μ¬μ©ν μ μκ² AWS APIλ₯Ό νΈμΆνλ€
=> AWS APIλ₯Ό μ¬μ©ν μ μλλ‘ 'μΈμ¦, μΈκ°'λ₯Ό νμΈν ν μμ²νλ λλ‘ S3 λ²ν·μ μμ±νλ€
μΈμ¦κ³Ό μΈκ°λ₯Ό νμΈν νμλ AWS CloudTrail μλΉμ€λ₯Ό μ΄μ©νμ¬ 'API λ‘κΉ "μ λ¨κΈ΄λ€
μ¬κΈ°μμ API λ‘κΉ μ΄λ AWS APIμ νλ κΈ°λ‘μ μ μ₯νλ κ²μΌλ‘, 보μ μ¬κ³ λ μ₯μ κ° λ°μνλ©΄ λμ± λΉ λ₯΄κ² λμν μ μλ€
=> AWS λͺ¨λ μλΉμ€λ AWS APIλ‘ μνΈ μμ©νκΈ° λλ¬Έμ API λ‘κΉ μ κΈ°λ‘νλ κ²μ λ§€μ° μ€μνλ€
AWS CloudTrailμ AWS κ³μ μ κ±°λ²λμ€, κ·μ μ€μ, μ΄μ κ°μ¬, μν κ°μ¬λ₯Ό μ§μνλ μλΉμ€μ΄λ€
CloudTrailμ μ¬μ©νλ©΄ AWS μΈνλΌμμ κ³μ νλκ³Ό κ΄λ ¨λ μμ μ κΈ°λ‘νκ³ μ§μμ μΌλ‘ λͺ¨λν°λ§νμ¬ λ³΄κ΄ ν μ μλ€
AWS IAM
μμ μμλ³Έ μΈμ¦κ³Ό μΈκ°λ AWS IAMμΌλ‘ λμνλ€
μ΄λ²μλ AWS IAM λμμ μμλ³΄κ³ AWS IAM κ΅¬μ± μμμ κ΄λ ¨ μ©μ΄λ₯Ό μ΄ν΄λ³΄κ³ , IAM μ μ± κ³Ό μν μ 곡λΆν΄λ³΄μ!
AWS IAMμ΄λ
AWS IAM(Identitiy & Access Management)μ AWS μλΉμ€μ 리μμ€μ μμ νκ² μ κ·Όν μ μλλ‘ κ΄λ¦¬νλ κΈ°λ₯μ΄λ€
=> IAMμ μ΄μ©νμ¬ λ¦¬μμ€λ₯Ό μ¬μ©νλλ‘ 'μΈμ¦'κ³Ό 'κΆν'μ ν΅μ νλ€
AWS μ¬μ©μ λ° κ·Έλ£Ήμ λ§λ€κ³ κ΄λ¦¬νκ±°λ κΆνμ μ΄μ©νμ¬ AWS 리μμ€ μ κ·Όμ νμ©, κ±°λΆν μ μλ€
AWS IAMμ λλΆλΆμ AWS μλΉμ€μ μ°κ²°λμ΄ νμ©ν μ μμΌλ©°, μΆκ° λΉμ© μμ΄ μ¬μ©ν μ μλ€
AWS IAM κ΅¬μ± μμμ λμ λ°©μ
κ΅¬μ± μμ
AWS IAMμ μ¬μ©μ, κ·Έλ£Ή, μν , μ μ± μΌλ‘ ꡬμ±λλ€
μμΈν μ΄ν΄λ³΄λ©΄
AWS κ³μ λ£¨νΈ μ¬μ©μ : 맨 μ²μ μμ±λ AWS κ³μ μ΄λ©°, ν΄λΉ κ³μ μ λͺ¨λ κΆνμ κ°μ§κ³ μλ€
IAM μ¬μ©μ : λ³λμ AWS κ³μ μ΄ μλ κ³μ λ΄ μ¬μ©μμ΄λ©°, κ° IAM μ¬μ©μλ μ체 μ격 μ¦λͺ μ 보μ νλ€
=> μ¦, IAM μ¬μ©μλ§λ€ νΉμ AWS μμ μ μνν μ μκ² κΆνμ ν΅μ ν μ μλ€
IAM κ·Έλ£Ή : IAM μ¬μ©μ μ§ν©μ μλ―Ένλ€
=> IAM κ·Έλ£Ήμ κΆνμ μ§μ ν΄μ λ€μμ IAM μ¬μ©μμ κΆνμ μ½κ² κ΄λ¦¬ν μ μμ
IAM μ μ± : μ격 μ¦λͺ μ΄λ 리μμ€μ μ°κ²°λ λ μμ²μ νμ©, κ±°λΆ ν μ μλ κΆνμ μ μνλ AWS κ°μ²΄μ΄λ€
IAM μν : νΉμ κΆνμ κ°μ§ κ³μ μ μμ±ν μ μλ IAM μ격 μ¦λͺ μ΄λ€
=> μν μλ κ·Έμ μ°κ΄λ μνΈ λλ μ κ·Ό ν€ κ°μ μ₯κΈ° μ격 μ¦λͺ μ΄ μκ³ μν μ μ£Όλ©΄ μν μΈμ μ μν μμ 보μ μ격 μ¦λͺ μ μ 곡νλ€
(μν μ μ΄μ©νμ¬ μΌλ°μ μΌλ‘ AWS 리μμ€μ μ κ·Όν μ μλ μ¬μ©μ, μ ν리μΌμ΄μ , μλΉμ€μ μ κ·Ό κΆνμ μμν μ μμ)
보μ 주체 : AWS κ³μ λ£¨νΈ μ¬μ©μ, IAM μ¬μ©μ, IAM μν μ μ΄μ©νμ¬ λ‘κ·ΈμΈνκ³ AWSμ μμ²νλ μ¬λ λλ μ ν리μΌμ΄μ μ΄λ€
μΈμ¦, μΈκ° λμ λ°©μ
IAM μ¬μ©μκ° AWS 리μμ€λ₯Ό μ¬μ©ν λλ μνΈλ μ κ·Ό ν€ κ°μ μ격 μ¦λͺ μ μ¬μ©νμ¬ μΈμ¦λ°μμΌ νλ€!
=> IAM μ¬μ©μ κ³μ μ λ°λ₯Έ μνΈλ μ κ·Ό ν€κ° μ¬λ°λ₯΄λ€λ©΄ μ ν©ν μ¬μ©μλ‘ κ°μ£Όλμ΄ μΈμ¦ λμμ΄ λ§λ¬΄λ¦¬ λ¨
κ·Έλ€μ μΈμ¦μ΄ μ²λ¦¬λλ©΄ IAM μ¬μ©μλ μ ν©ν κΆνμ΄ μλμ§ νμΈνλ μΈκ° λμμ μ§ννλ€
(ex. EC2 FullAccess κΆνμ κ°μ§ μ¬μ©μκ° μλ€λ©΄ EC2λ μ¬μ©μ΄ κ°λ₯νμ§λ§ S3λ μ¬μ©ν μ μμ)
π IAM μ¬μ©μ μ΄μΈμ IAM κ·Έλ£Ήμ μ μ± μ λΆμ¬ν΄μ κ·Έλ£Ήλ³λ‘ μ’ λ νΈλ¦¬νκ² κ΄λ¦¬ν μ μλ€
AWS IAM μ¬μ©μ
IAM μ¬μ©μλ μΌλ°μ μΌλ‘ 'λ£¨νΈ μ¬μ©μ'μ 'μΌλ° IAM μ¬μ©μ'λ‘ λλλ€
λ£¨νΈ μ¬μ©μλ AWSμ λͺ¨λ 리μμ€μ μ κ·Όν μ μλ μ 체 κΆνμ΄ μμ΄ AWS κ³μ μμ± λ° ν΄μ§μ IAM μ¬μ©μ κ΄λ¦¬ λ±μ μ¬μ©νμ§λ§, μ§μ AWS 리μμ€λ₯Ό μ¬μ©νλλ‘ κΆμ₯νμ§λ μμ
=> λ£¨νΈ μ¬μ©μ κ³μ μ λ€μκ° μ¬μ©νλ©΄ μ΄λ€ μ¬μ©μκ° μ΄λ€ νμλ₯Ό νλμ§κ΅¬λ³ν μ μκ³ , λ£¨νΈ μ¬μ©μ κ³μ μ΄ ν΄νΉλλ©΄ 곡격μκ° AWS κ³μ μ λν λͺ¨λ κΆνμ κ°μ§κ² λλ―λ‘!
AWS IAM μ μ±
μ¬μ©μλ₯Ό μΈκ°νκ³ λλ©΄, μ¬μ©μλ³λ‘ κΆνμ λν νμΈ μ μ°¨λ₯Ό μ§ννλ€
μ¬μ©μλ³ κΆν κ²μ¬λ AWS IAM μ μ± μ μ΄μ©ν΄μ μ§ννλ€
=> μ¬μ©μμ μ°κ²°λ IAM μ μ± μΌλ‘ μ¬μ©μλ³ AWS μλΉμ€μ 리μμ€μ λν μΈκ°(κΆν)μ μ»μ μ μλ€
μ¬μ©μκ° νΉμ AWS μλΉμ€λ₯Ό μ¬μ©νλ €κ³ μΈκ°λ₯Ό μμ²νλ©΄, IAMμ IAM μ μ± μ κΈ°λ°μΌλ‘ AWS μμ²μ κ²μ¬, νκ°ν ν μ΅μ’ μ μΌλ‘ νμ©, μ°¨λ¨μ κ²°μ
{
"Version" : "2012-10-17"
"Statement" : [
{
"Effect" : "Allow or Deny",
"principal" : "principal",
"Action" : ["action"],
"Resource" : ["*"],
"Condition" : {"key":"value"}
}
]
}
Effect : λͺ μμ μ μ± μ λν νμ© νΉμ μ°¨λ¨
principal : μ κ·Όμ νμ© νΉμ μ°¨λ¨νκ³ μ νλ λμ
Action: νμ© νΉμ μ°¨λ¨νκ³ μ νλ μ κ·Ό νμ
Resource : μμ²μ λͺ©μ μ§κ° λλ μλΉμ€
Condition : λͺ μμ μ‘°κ±΄μ΄ μ ν¨νλ€κ³ νλ¨λ μ μλ 쑰건
AWS IAM μν
IAM μν μ΄λ μ μλ κΆν λ²μ λ΄ AWS APIλ₯Ό μ¬μ©ν μ μλ μμ μ격 μ¦λͺ μ μλ―Ένλ€
μ½λμ νλ μ½λ©νμ§ μκ³ μ€νν λ μμ(+Token, μΌμ μκ° μ΄ν λ§λ£λ¨) μ격 μ¦λͺ μ μ¬μ©νλλ°, μ΄λ₯Ό
"Assume"μ΄λΌκ³ νλ€
=> IAM μν μ μ¬μ©νλ©΄ μ¬μ©μ κΆνμ 곡μ νκ±°λ λ§€λ² κΆνμ λΆμ¬ν νμ X
EC2 Instance Profile, Federations(Cross-Account, SAML2.0, Web Identify Provider)λ€μ IAM μν μ νμ©ν μ
κ°λ°μκ° S3 λ²ν·μ λν μ κ·Ό κΆνμ΄ νμν EC2 μΈμ€ν΄μ€μμ μ ν리μΌμ΄μ μ μ€ννλ€κ³ μκ°ν΄λ³΄μ!
κ΄λ¦¬μλ S3 Full κΆνμ΄ μ°κ²°λ 'IAM μν 'μ μμ±ν΄μ EC2 μΈμ€ν΄μ€μ μ°κ²°νλ€(EC2 Instance Profile)
EC2μμ μ ν리μΌμ΄μ μ IAM μν μ μμ μ격 μ¦λͺ μ μ¬μ©νμ¬ S3 λ²ν·μ μ κ·Όν μ μλ€
=> κ΄λ¦¬μκ° κ°λ°μμκ² λ³λμ κΆνμ λΆμ¬νμ§ μμλ μ ν리μΌμ΄μ μ΄ S3 λ²ν·μ μ κ·Όν μ μκ³ , κ°λ°μλ μ΄λ₯Ό μν΄ μΆκ°μ μΈ μ격 μ¦λͺ μ 곡μ νκ±°λ κ΄λ¦¬ν νμκ° μ ν μμ
'π Infra > AWS κ΅κ³Όμ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[AWS κ΅κ³Όμ] 10μ₯, 11μ₯ - μλνλ μ€ (5) | 2024.01.22 |
---|---|
[AWS κ΅κ³Όμ] 9μ₯ - AWS μ€ν μ€μΌμΌλ§ μλΉμ€ (2) | 2024.01.21 |
[AWS κ΅κ³Όμ] 7μ₯ - AWS κ³ κΈ λ€νΈμνΉ μλΉμ€(2) (0) | 2024.01.18 |
[AWS κ΅κ³Όμ] 7μ₯ - AWS κ³ κΈ λ€νΈμνΉ μλΉμ€(1) (0) | 2024.01.18 |
[AWS κ΅κ³Όμ] 6μ₯ - AWS λ°μ΄ν°λ² μ΄μ€ μλΉμ€(2) (0) | 2024.01.16 |