AWS(Amazon Web Services)μ ν΅μ¬ κ°λ μ€ νλμΈ λ£¨νΈ μ μ (Root User)μ IAM μ μ (IAM User), κ·Έλ¦¬κ³ μ μ± (Policy)μ λν΄ μμλ³΄κ² μ΅λλ€. ν΄λΌμ°λ μ»΄ν¨ν μ ν¨κ³Όμ μΌλ‘ νμ©νκΈ° μν΄μλ μ΄λ¬ν κ°λ λ€μ λͺ νν μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. μ΄ κΈμμλ ν΄λΌμ°λμ κΈ°λ³Έ κ°λ λΆν° μμνμ¬ AWSμ μ¬μ©μ κ΄λ¦¬μ μ μ± μ€μ λ°©λ²κΉμ§ λ¨κ³λ³λ‘ μ€λͺ λλ¦¬κ² μ΅λλ€.
ν΄λΌμ°λμ μ¨νλ λ―Έμ€
ν΄λΌμ°λ
ν΄λΌμ°λ(Cloud)λ μ½κ² μ¬μ©νκ³ λ°λ©ν μ μλ μ»΄ν¨ν° μμμ μλ―Έν©λλ€. μ¬μ©μλ νμν λ μμμ λΉλ € μ¬μ©νκ³ , λ μ΄μ νμνμ§ μμ λλ λ°νν μ μμ΅λλ€. ν΄λΌμ°λλ μ μ°μ±κ³Ό νμ₯μ±μ΄ λ°μ΄λλ©°, μ΄κΈ° ν¬μ λΉμ©μ μ€μΌ μ μλ μ₯μ μ΄ μμ΅λλ€.
ν΄λΌμ°λ μ»΄ν¨ν
ν΄λΌμ°λ μ»΄ν¨ν (Cloud Computing)μ ν΄λΌμ°λμ μ΄λμλ νΈλ¦¬νκ² μ κ·Όν μ μκ² ν΄μ£Όλ κΈ°μ μ λλ€. μΈν°λ·μ ν΅ν΄ μλ², μ€ν 리μ§, λ°μ΄ν°λ² μ΄μ€, λ€νΈμνΉ λ± λ€μν μ»΄ν¨ν μμμ μ 곡λ°μ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κΈ°μ μ μ체μ μΌλ‘ 물리μ μλ²λ₯Ό ꡬμΆνκ³ κ΄λ¦¬νλ λΆλ΄μμ λ²μ΄λ μ μμ΅λλ€.
μ¨νλ λ―Έμ€(On-Premises)
μ¨νλ λ―Έμ€(On-Premises)λ κΈ°μ μ΄ μ체μ μΌλ‘ μλ²λ₯Ό ꡬμΆνκ³ μ΄μνλ λ°©μμ λ§ν©λλ€. μ¨νλ λ―Έμ€ νκ²½μμλ κΈ°μ μ΄ λͺ¨λ νλμ¨μ΄μ μννΈμ¨μ΄λ₯Ό μ§μ κ΄λ¦¬νλ©°, 보μκ³Ό λ°μ΄ν° κ΄λ¦¬μ λν μ± μμ μ§λλ€. λ°λ©΄, ν΄λΌμ°λ μ»΄ν¨ν μ μ΄λ¬ν λΆλ΄μ μ€μ΄κ³ μ μ°μ±μ μ 곡νλ λμμ λλ€.
λ£¨νΈ μ μ (Root User)
λ£¨νΈ μ μ (Root User)λ AWS κ³μ μ λͺ¨λ κΆνμ κ°μ§ κ³μ μ λλ€. μ΄ κ³μ μ AWS κ³μ μ μμ±ν λ μ¬μ©λ μ΄λ©μΌ μ£Όμμ λΉλ°λ²νΈλ‘ λ‘κ·ΈμΈν©λλ€. λ£¨νΈ μ μ λ κ²°μ μ 보 λ³κ²½, κ³μ μ€μ μμ λ± κ³μ μ κ΄ν λͺ¨λ κΆνμ κ°μ§κ³ μκΈ° λλ¬Έμ, 보μμ λ£¨νΈ μ μ κ³μ μ μ΅λν μ¬μ©μ μμ νκ³ , κΌ νμν μμ μλ§ μ¬μ©ν΄μΌ ν©λλ€.
λ£¨νΈ μ μ μ νΉμ§
- λͺ¨λ κΆν 보μ : AWSμ λͺ¨λ μλΉμ€μ 리μμ€μ μ κ·Ό κ°λ₯.
- λ¨μΌ κ³μ : νλμ λ£¨νΈ μ μ κ³μ λ§ μ‘΄μ¬.
- 보μ μν: λ£¨νΈ μ μ μ κΆνμ΄ λ§€μ° λκΈ° λλ¬Έμ, 보μμ κ°λ³ν μ κ²½ μ¨μΌ ν¨.
IAM μ μ (IAM User)
IAM μ μ (IAM User)λ AWSμ Identity and Access Management(IAM) μλΉμ€λ₯Ό ν΅ν΄ μμ±λλ μ¬μ©μ κ³μ μ λλ€.
IAM μ μ λ νΉμ κΆνλ§μ λΆμ¬λ°μ μ¬μ©ν μ μμΌλ©°, λ£¨νΈ μ μ μ λ¬λ¦¬ κΆνμ μΈλΆννμ¬ κ΄λ¦¬ν μ μμ΅λλ€.
IAM μ μ μ νΉμ§
- μ νλ κΆν: νμμ λ°λΌ μ΅μνμ κΆνλ§ λΆμ¬νμ¬ λ³΄μ κ°ν.
- μ¬λ¬ μ μ μμ± κ°λ₯: νμλ³λ‘ κ°λ³ IAM μ μ λ₯Ό μμ±νμ¬ κ΄λ¦¬.
- μ μ± μ ν΅ν κΆν κ΄λ¦¬: μ μ± (Policy)μ ν΅ν΄ κ° μ μ μκ² νμν κΆνμ μΈλΆμ μΌλ‘ μ€μ .
IAM μ μ μ λ£¨νΈ μ μ μ μ°¨μ΄μ
- κΆν λ²μ: λ£¨νΈ μ μ λ λͺ¨λ κΆνμ 보μ νμ§λ§, IAM μ μ λ λΆμ¬λ μ μ± μ λ°λΌ μ νλ κΆνλ§μ κ°μ§.
- 보μ κ΄λ¦¬: IAM μ μ λ νΉμ μμ μ νμν κΆνλ§ λΆμ¬νμ¬ λ³΄μ μνμ μ€μΌ μ μμ.
- μ μ°μ±: IAM μ μ λ ν λ¨μλ‘ κ΄λ¦¬ν μ μμ΄ νμ μ μ 리.
μ μ± (Policy)μ μ΄ν΄
μ μ± (Policy)μ AWSμμ IAM μ μ λλ 리μμ€μ κΆνμ μ μνλ JSON νμμ λ¬Έμμ λλ€.
μ μ± μ ν΅ν΄ μ μ κ° νΉμ 리μμ€μ μ κ·Όν μ μλμ§, μ΄λ€ μμ μ μνν μ μλμ§λ₯Ό μΈλΆμ μΌλ‘ μ€μ ν μ μμ΅λλ€.
μ μ± μ ꡬ쑰
μ μ± μ λ²μ (Version)κ³Ό μ€ν μ΄νΈλ¨ΌνΈ(Statement)λ‘ κ΅¬μ±λ©λλ€. μ€ν μ΄νΈλ¨ΌνΈλ μ¬λ¬ κ°μ κΆν μ μλ₯Ό ν¬ν¨ν μ μμΌλ©°, κ° κΆν μ μλ 리μμ€(Resource), νλ(Action), ν¨κ³Ό(Effect) λ±μ λͺ μν©λλ€.
{
"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/*"]
}
]
}
μ μ± μ ꡬμ±μμ
1. Version
- μ€λͺ : μ μ± μ λ¬Έλ² λ²μ μ μ§μ ν©λλ€.
- μΌλ° κ°: "2012-10-17" (AWSμμ κΆμ₯νλ μ΅μ λ²μ )
2. Statement
- μ€λͺ : κΆνμ μ΅μ λ¨μλ‘, νλ μ΄μμ μ€ν μ΄νΈλ¨ΌνΈλ₯Ό ν¬ν¨ν μ μμ΅λλ€.
- κ΅¬μ± μμ:
- Sid (Statement ID): λ¬Έμ₯ IDλ‘ λ¬Έμ₯μ μλ³μ μν μ ν©λλ€. μ ν μ¬νμ λλ€.
- Effect: Allow λλ Denyλ‘ μ κ·Όμ νμ©ν μ§, μ°¨λ¨ν μ§ κ²°μ ν©λλ€.
- Principal: νΉμ μ μ± μ΄ μ μ©λ μ¬μ©μ, κ³μ , μν μ μ§μ ν©λλ€.
- Action: νμ© λλ μ°¨λ¨ν AWS μλΉμ€μ νΉμ μμ μ λͺ μν©λλ€.
- Resource: μ μ± μ΄ μ μ©λ AWS 리μμ€μ ARN(Amazon Resource Name)μ μ§μ ν©λλ€.
- Condition: μ μ± μ΄ μΈμ μ μ©λ μ§λ₯Ό κ²°μ νλ 쑰건μ λͺ μν©λλ€. μ ν μ¬νμ λλ€.
μ μ± μ μ μ© λ°©λ²
μ μ± μ μ μ (User), κ·Έλ£Ή(Group), μν (Role)μ μ°κ²°νμ¬ μ μ©ν μ μμ΅λλ€. λν, 리μμ€(Resource)μ μ§μ μ°κ²°νμ¬ λ¦¬μμ€ μ€μ¬μ κΆν κ΄λ¦¬λ₯Ό ν μλ μμ΅λλ€.
κ·Έλ£Ήμ μ μ± μ°κ²°
κ·Έλ£Ήμ μ μ± μ μ°κ²°νλ©΄, κ·Έλ£Ήμ μν λͺ¨λ μ μ μκ² λμΌν κΆνμ΄ λΆμ¬λ©λλ€. μ΄λ κΆν κ΄λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ ν μ μλ λ°©λ²μ λλ€.
μμ: κ°λ°μ κ·Έλ£Ή
- κ·Έλ£Ή ꡬμ±μ: Alice, Bob, Charles
- μ°κ²°λ μ μ± : AmazonEC2FullAccess, AmazonS3FullAccess
μ΄λ κ² νλ©΄ Alice, Bob, Charlesλ λͺ¨λ EC2μ S3μ λν μ 체 μ κ·Ό κΆνμ κ°μ§κ² λ©λλ€.
μ¬μ©μμ μ μ± μ°κ²°
κ·Έλ£Ήμ μνμ§ μμ κ°λ³ μ μ μκ² μ μ± μ μ°κ²°ν μ μμ΅λλ€. μ΄λ νΉμ μ μ μκ²λ§ νμν κΆνμ λΆμ¬ν λ μ μ©ν©λλ€.
μμ: μΈλΌμΈ μ μ±
- μ¬μ©μ: Fred
- μ μ± : AmazonRDSReadOnlyAccess
μΈλΌμΈ μ μ± μ νΉμ μ¬μ©μμκ²λ§ μ μ©λλ μ μ± μΌλ‘, κ·Έλ£Ήμ μνμ§ μλλΌλ μνλ μ μ μκ² μ§μ μ°κ²°ν μ μμ΅λλ€.
μΈλΌμΈ μ μ± μμ±
μΈλΌμΈ μ μ± μ νΉμ μ μ , κ·Έλ£Ή, μν μ μ§μ μ°κ²°λλ μ μ± μΌλ‘, κ³ μ ν κΆνμ λΆμ¬ν λ μ¬μ©λ©λλ€.
- μ¬μ©μ: Fred
- μΈλΌμΈ μ μ± :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:StartInstances",
"Resource": "*"
}
]
}
- μ΄ μ μ± μ ν΅ν΄ Fredλ λͺ¨λ EC2 μΈμ€ν΄μ€λ₯Ό μμν μ μλ κΆνμ κ°μ§κ² λ©λλ€.
λ€μ€ κ·Έλ£Ήκ³Ό μ μ± μμ
μ μ λ μ¬λ¬ κ·Έλ£Ήμ μν μ μμΌλ©°, κ° κ·Έλ£Ήμ μ μ± μ μμλ°μ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ μ λ μ¬λ¬ μν μ λμμ μνν μ μμ΅λλ€.
μμ
- μ μ : Charles, David
- κ·Έλ£Ή:
- Charles: Developers, Audit
- David: Operators, Audit
μ μ± μ μ©:
- Developers κ·Έλ£Ή: AmazonEC2FullAccess, AmazonS3FullAccess
- Operators κ·Έλ£Ή: AmazonCloudWatchFullAccess
- Audit κ·Έλ£Ή: ReadOnlyAccess
κ²°κ³Ό:
- Charles: Developersμ Audit κ·Έλ£Ήμ μ μ± μ μμλ°μ EC2, S3 μ κ·Όκ³Ό ReadOnly μ κ·Ό κΆνμ κ°μ§λλ€.
- David: Operatorsμ Audit κ·Έλ£Ήμ μ μ± μ μμλ°μ CloudWatch μ κ·Όκ³Ό ReadOnly μ κ·Ό κΆνμ κ°μ§λλ€.
μ μ± μΆ©λκ³Ό μ°μ μμ
AWSμμλ νλμ μ μ λ 리μμ€μ μ¬λ¬ κ°μ μ μ± μ΄ μ°κ²°λ μ μμ΅λλ€.
μ΄λ μ μ± κ°μ μΆ©λμ΄ λ°μν μ μλλ°, AWSλ μ΄λ₯Ό 보μμ μΌλ‘ ν΄μνμ¬ μ κ·Όμ κ±°λΆν©λλ€.
μ μ± μΆ©λ μμ
- μ μ Aμκ² S3 λ²ν· example-bucketμ λν μ½κΈ°(GetObject) κΆνμ νμ©νλ μ μ± μ μ°κ²°.
- λμμ, S3 λ²ν· example-bucketμ λν μ°κΈ°(PutObject) κΆνμ μ°¨λ¨νλ μ μ± μ 리μμ€μ μ°κ²°.
μ΄ κ²½μ°, μ μ Aλ GetObjectλ νμ©λμ§λ§, PutObjectλ μ°¨λ¨λ©λλ€. λ§μ½ λ μ μ± μ΄ λμΌν μμ μ λν΄ μμΆ©λλ€λ©΄, Denyκ° μ°μ μ μ©λμ΄ μ κ·Όμ΄ κ±°λΆλ©λλ€.
μ μ± νκ° κ·μΉ
AWSλ λ€μκ³Ό κ°μ κ·μΉμ ν΅ν΄ μ μ± μ νκ°ν©λλ€:
- λͺ μμ μΈ Deny: νλλΌλ Denyκ° μμΌλ©΄ μ 체 μ κ·Όμ΄ κ±°λΆλ©λλ€.
- λͺ μμ μΈ Allow: Denyκ° μκ³ Allowκ° μμΌλ©΄ μ κ·Όμ΄ νμ©λ©λλ€.
- κΈ°λ³Έ Deny: λͺ μμ μΈ Allowκ° μμΌλ©΄ κΈ°λ³Έμ μΌλ‘ μ κ·Όμ΄ κ±°λΆλ©λλ€.
λ°λΌμ, 보μ κ°νλ₯Ό μν΄ μ μ± μ μ€κ³ν λ λͺ μμ μΈ Denyλ₯Ό νμ©νμ¬ λΆνμν μ κ·Όμ μ°¨λ¨νλ κ²μ΄ μ’μ΅λλ€.
μ μ± μμ± μμ
μλλ νΉμ S3 λ²ν·μ λν μ½κΈ°μ μ°κΈ° κΆνμ μ μ΄νλ μ μ± μ μμμ λλ€.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*"
},
{
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
]
}
μ€λͺ
- Version: μ μ± λ¬Έλ²μ λ²μ .
- Statement: λ κ°μ μ€ν
μ΄νΈλ¨ΌνΈλ‘ ꡬμ±.
- 첫 λ²μ§Έ μ€ν μ΄νΈλ¨ΌνΈλ example-bucketμμ κ°μ²΄λ₯Ό μ½κΈ°(s3:GetObject)λ₯Ό νμ©.
- λ λ²μ§Έ μ€ν μ΄νΈλ¨ΌνΈλ example-bucketμ κ°μ²΄λ₯Ό μ°κΈ°(s3:PutObject)λ₯Ό μ°¨λ¨.
μ΄ μ μ± μ ν΅ν΄ νΉμ μ μ λ example-bucketμ κ°μ²΄λ₯Ό μ½μ μ μμ§λ§, μλ‘μ΄ κ°μ²΄λ₯Ό μΆκ°νκ±°λ μμ ν μ μμ΅λλ€.
μ μ± κ΄λ¦¬ ν
- μ΅μ κΆν μμΉ(Principle of Least Privilege): μ μ λ μλΉμ€μκ² νμν μ΅μνμ κΆνλ§μ λΆμ¬νμ¬ λ³΄μμ κ°νν©λλ€.
- μ μ± μ΄λ¦ κ·μΉν: μ μ± μ λͺ ννκ² μλ³ν μ μλλ‘ μΌκ΄λ μ΄λ¦ κ·μΉμ μ¬μ©ν©λλ€.
- μ κΈ°μ μΈ κΆν κ²ν : μ£ΌκΈ°μ μΌλ‘ μ μ± κ³Ό κΆνμ κ²ν νμ¬ λΆνμν κΆνμ΄ λΆμ¬λμ§ μμλμ§ νμΈν©λλ€.
- μν (Role) νμ©: λΉμ·ν κΆνμ κ°μ§ μ μ κ·Έλ£Ήμ μν μ ν λΉνμ¬ μ μ± κ΄λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ μνν©λλ€.
- μ μ± λ²μ κ΄λ¦¬: μ μ± μ λ³κ²½ μ¬νμ μΆμ νκ³ , νμ μ μ΄μ λ²μ μΌλ‘ λ‘€λ°±ν μ μλλ‘ λ²μ κ΄λ¦¬λ₯Ό λμ ν©λλ€.
κ²°λ‘
AWSμμ λ£¨νΈ μ μ μ IAM μ μ μ μ°¨μ΄μ , κ·Έλ¦¬κ³ μ μ± μ ν΅ν κΆν κ΄λ¦¬λ ν΄λΌμ°λ 보μμ ν΅μ¬ μμμ λλ€. λ£¨νΈ μ μ λ λͺ¨λ κΆνμ 보μ νκ³ μμ΄ λ³΄μ μνμ΄ ν¬κΈ° λλ¬Έμ, IAM μ μ λ₯Ό μμ±νμ¬ νμν κΆνλ§μ λΆμ¬νλ κ²μ΄ κΆμ₯λ©λλ€. λν, μ μ± μ ν΅ν΄ μΈλΆμ μΈ κΆνμ κ΄λ¦¬ν¨μΌλ‘μ¨ λ³΄μμ κ°ννκ³ , ν΄λΌμ°λ 리μμ€μ λ¬΄λ¨ μ κ·Όμ λ°©μ§ν μ μμ΅λλ€.
μ°Έκ³ μλ£
- AWS 곡μ λ¬Έμ - IAM μ¬μ©μ λ° κ·Έλ£Ή: IAM User Guide
- AWS 곡μ λ¬Έμ - IAM μ μ± : IAM Policies
- AWS 곡μ λ¬Έμ - μ μ± νκ° λ‘μ§: IAM Policy Evaluation Logic
- AWS μ μ± μν: AWS Managed Policies
- JSON μ μ± μμ : IAM JSON Policy Examples
'βοΈ Cloud Native > π³οΈ AWS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[AWS] IAM μ μ± : μ¬μ©μ 보νΈλ₯Ό μν λΉλ°λ²νΈ μ μ± κ³Ό MFA μ€μ (0) | 2025.01.21 |
---|---|
[AWS] AWS Region μ ν κ°μ΄λ (0) | 2025.01.19 |
[AWS] AWS μ΄ν΄νκΈ°: IP μ£Όμμ VPC κ΄λ¦¬ (0) | 2025.01.17 |
[AWS] Amazon EC2 μΈμ€ν΄μ€ μμ± κ°μ΄λ (0) | 2025.01.17 |
[AWS] AWS μ΄ν΄νκΈ°: IAM μ μ μμ± (0) | 2025.01.17 |