
IAMμ Identity and Access Managementμ μ½μλ‘ μ¬μ©μλ₯Ό μμ±νκ³ κ·Έλ£Ήμ λ°°μΉνλ κΈλ‘λ² μλΉμ€μ ν΄λΉνλ€. AWS κ³μ μ μμ±νλ©΄ μμ±ν κ³μ μ λ£¨νΈ κ³μ μ΄ λλ€. λ£¨νΈ κ³μ μ μ€μ§ κ³μ μ μμ±ν λλ§ μ¬μ©λμ΄μΌ νλ€. κ·Έ ν λ£¨νΈ κ³μ μ λ μ΄μ μ¬μ©ν΄μλ, 곡μ ν΄μλ μλλ€. κ·Έ λμ μ μ¬μ©μλ₯Ό μμ±ν΄μΌ νλ€.
IAMμμ μ¬μ©μλ₯Ό μμ±ν λ νλμ μ¬μ©μλ μ‘°μ§ λ΄μ ν μ¬λμ ν΄λΉλλ€.
νμνλ€λ©΄ μ¬μ©μλ€μ κ·Έλ£ΉμΌλ‘ λ¬Άμ μλ μμΌλ©° ν μ¬μ©μλ μ¬λ¬ κ·Έλ£Ήμ μν μ μλ€.
μμμ λ΄€λ― μ¬μ©μμ κ·Έλ£Ήμ μμ±νλ μ΄μ λ 무μμΌκΉ? κ·Έ μ΄μ λ μ¬μ©μκ° AWS κ³μ μ μ¬μ©νλλ‘ νμ©νκΈ° μν΄μμ΄λ€. μ΄λ¬ν νμ©μ μν΄μλ μ¬μ©μμκ² κΆνμ λΆμ¬ν΄μΌ νλ€.
κΆνμ λΆμ¬νκΈ° μν΄μλ μ¬μ©μ λλ κ·Έλ£Ήμκ² μ μ±
λλ IAM μ μ±
μ΄λΌκ³ λΆλ¦¬λ JSON λ¬Έμλ₯Ό μ§μ ν μ μλ€. λ¬Έμμ νν μμλ μλμ κ°λ€.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "elasticloadbalancing:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cloudwatch":"ListMetrics",
"cloudwatch":"GetMetricStatistics",
"cloudwatch":"Describe*",
],
"Resource": "*"
}
]
}
νΉμ μ¬μ©μ, νΉμ νΉμ κ·Έλ£Ήμ μν μ¬μ©μλ€μ΄ μ΄λ€ μμ μ κΆνμ κ°μ§κ³ μλμ§λ₯Ό μ½κ² μ μ μλ€. μμμμλ μ¬λλ€μκ² EC2 μ¬μ© λ° Describeμ΄ νμ©λμ΄ μλ μνμ΄λ©° Elastic Loadbalancing μλΉμ€μ Describe, κ·Έλ¦¬κ³ CloudWatchμ μ¬μ©λ νμ©μ΄ λμ΄ μλ€λ κ±Έ λ³Ό μ μλ€. μ΄μ κ°μ JSON ννμ λ¬Έμλ₯Ό ν΅ν΄ μ¬μ©μλ€μ΄ AWSμ λ€μν μλΉμ€λ€μ μ΄μ©ν μ μλλ‘ νμ©ν μ μλ€.
AWSμμλ λͺ¨λ μ¬μ©μμκ² λͺ¨λ κΆνμ νμ©νμ§ μλλ€. μκ°νμ§ λͺ»ν μ¬μ©μκ° λ무 λ§μ μλΉμ€λ₯Ό λ°μμν€κ±°λ 보μ λ¬Έμ λ₯Ό μΌκΈ°ν μ μκΈ° λλ¬Έμ΄λ€. κ·Έλμ AWSμμλ μ΅μ κΆνμ μμΉ(Least privilege principle)μ μ μ©νλ€. μ¬μ©μκ° μΈ κ°μ μλΉμ€μλ§ μ κ·Όν΄μΌ νλ€λ©΄ κ·Έμ λ§λ κΆνλ§ λΆμ¬νλ κ²μ΄λ€.
{
"Version": "2012-10-17",
"Id": "S3-Account-Permissions",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam:123456789012:root"]
},
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": ["arn:aws:s3:::mybucket/*"]
}
]
}
μ μ± μ ꡬ쑰λ JSON λ¬Έμλ‘ λμ΄ μμΌλ©° μ μ± κ΅¬μ‘°μ μ μ± λͺ λͺ λ²μ λ€μκ³Ό κ°λ€. μμΌλ‘ AWSμμ μμ£Ό λ³΄κ² λ νμμ΄λΌ μ΅μν΄ μ§λ κ²μ΄ μ’λ€.
AWSμμλ λ€μν μ΅μ μ μ΄μ©ν΄ λΉλ°λ²νΈ μ μ± μ μμ±μ΄ κ°λ₯νλ€.
λ¨Όμ λΉλ°λ²νΈμ μ΅μ κΈΈμ΄λ₯Ό μ€μ ν μ μκ³ νΉμ μ νμ κΈμ μ¬μ©μ μꡬν μ μλ€. μλ₯Ό λ€λ©΄ λλ¬Έμλ μλ¬Έμ νΉμλ¬Έμ λ±μ μꡬν μ μλ€.
λν IAM μ¬μ©μλ€μ λΉλ°λ²νΈ λ³κ²½μ νμ© λλ κΈμ§ν μ μλ€. μΌμ κΈ°κ°μ΄ μ§λλ©΄ λΉλ°λ²νΈλ₯Ό λ§λ£μμΌ λΉλ°λ²νΈ μ€μ μ μꡬν μ μλ€.
λ§μ§λ§μΌλ‘ μ¬μ©μμ λΉλ°λ²νΈ μ¬μ¬μ©μ λ§μ λΉλ°λ²νΈ λ³κ²½ μ, λμΌν ν¨μ€μλλ₯Ό μ¬μ©νμ§ λͺ»νκ² ν μ μλ€.
λ€μμ μΈμ¦μ΄λΌκ³ λΆλ¦¬λ MFAλ AWSμμ μ΄ λ©μ»€λμ¦μ νμμ μΌλ‘ μ¬μ©νλλ‘ κΆμ₯νκ³ μλ€.
μ¬μ©μλ€μ κ³μ μ μ κ·Ό κΆνμ΄ μκ³ λ§μ μμ μ΄ κ°λ₯νλ° νΉν κ΄λ¦¬μλ€μ ꡬμ±μ λ³κ²½νκ±°λ 리μμ€λ₯Ό μμ νλ λ± λ§μ μμ μ ν μ μλ€. λ°λΌμ μ μ΄λ λ£¨νΈ κ³μ μ λ¬΄μ¨ μΌμ΄ μμ΄λ λ°λμ 보νΈν΄μΌ νλ©° κ·Έλ μ§ μμ μ 체 IAM μ¬μ©μλ€λ 보νΈλ₯Ό ν΄μΌνλ€.
AWSμμ MFA μ₯μΉ μ΅μ μΌλ‘λ λ€μκ³Ό κ°μ μ₯μΉλ€μ΄ μλ€.
AWSλ₯Ό κ΄λ¦¬νκΈ° μν΄ μ‘μΈμ€ νλ λ°©λ²μΌλ‘λ μΈ κ°μ§κ° μλ€.
μ‘μΈμ€ ν€λ μ격 μ¦λͺ μΌλ‘ CLIμμ AWSλ₯Ό κ΄λ¦¬νκ³ μΆλ€λ©΄ μ‘μΈμ€ ν€λ₯Ό μ¬μ©ν΄μΌ μ κ·Όμ΄ κ°λ₯νλ€. AWSλ‘λΆν° SDKλ μ ν리μΌμ΄μ μ½λ λ΄μμ APIλ₯Ό νΈμΆνκ³ μ ν λ μ¬μ©λλ λ°©μμ΄λ€. CLIμ κ·Όκ³Ό SDK λͺ¨λ μ‘μΈμ€ ν€λ‘ 보νΈλλ€.
μ‘μΈμ€ ν€λ κ΄λ¦¬ μ½μμ μ¬μ©ν΄μ μμ±ν μ μμΌλ©° μ¬μ©μλ€μ΄ μμ λ€μ μ‘μΈμ€ ν€λ₯Ό μ§μ κ΄λ¦¬νλ€. κ·Έλ¬λ―λ‘ μ¬μ©μλ μμ μ μ‘μΈμ€ ν€λ₯Ό μΈλΆλ‘ μ μΆν΄μλ μλλ€.
μ΄λ ν AWS μλΉμ€λ κ³μ μμ μ€νλμ΄μΌ νλ€. μ΄λ₯Ό μν΄μλ μ¬μ©μμ λ§μ°¬κ°μ§λ‘ μ΄λ€ κΆνμ΄ νμνλ€. λ°λΌμ AWS μλΉμ€μ κΆνμ λΆμ¬ν΄μΌ νλ€.
IAM Roleμ μ¬μ©μμ κ°μ§λ§ μ€μ μ¬λμ΄ μ¬μ©νλλ‘ λ§λ κ²μ΄ μλ AWS μλΉμ€μ μν΄ μ¬μ©λλλ‘ λ§λ€μ΄μ‘λ€. μλ₯Ό λ€μ΄ EC2 μΈμ€ν΄μ€μμ μ΄λ€ μμ μ μννλ € ν λ EC2 μΈμ€ν΄μ€μ κΆνμ λΆμ¬ν΄μΌ νλ€. μ΄ λ IAM Roleμ λ§λ€μ΄ νλμ κ°μ²΄λ‘ λ§λ λ€. EC2 μΈμ€ν΄μ€κ° AWSμ μ΄λ€ μλΉμ€μ μ κ·Όνλ €κ³ ν λ IAM Roleμ μ¬μ©νκ² λ κ²μ΄λ€.
IAM μ격 μ¦λͺ λ³΄κ³ μ : κ³μ μμ€μμ κ°λ₯νλ©° λ³΄κ³ μλ κ³μ μ μλ μ¬μ©μμ λ€μν μ격 μ¦λͺ μ μνλ₯Ό ν¬ν¨νλ€.
IAM μ‘μΈμ€ κ΄λ¦¬μ : μ¬μ©μμκ² λΆμ¬λ μλΉμ€μ κΆνκ³Ό ν΄λΉ μλΉμ€μ λ§μ§λ§μΌλ‘ μ‘μΈμ€ν μκ°μ΄ 보μΈλ€. μ΅μ κΆνμ μμΉμ μ μ§νκΈ°μ λ§€μ° λμμ΄ λλ μ 보λ₯Ό μ 곡νλ€. ν΄λΉ λꡬλ₯Ό μ¬μ©νμ¬ μ¬μ©μμ κΆνμ μ€μΌ μ μλ€.