AWS Security - IAM

이eun·2024년 12월 27일

Security

Blocking : 특정 자원에 대한 접근 혹은 사용을 제어하는 것

IAM은 Blocking의 영역, 가장 강력함

Encrypting : 공기되는 정보에 대해서 식별 불가능한 정보로 암호화하는 것

Hiding : 정보에 관한 접근을 특정 경로 혹은 명령어로 접근하는 것

IAM 구성요소

  • IAM user : AWS내에서 생성하는 사용자로 AWS와 상호작용하는 사용자 혹은 어플리케이션을 의미

  • IAM group : IAM User의 집합이고, Group을 사용함으로써 다수 사용자에 대하여 동일한 권한을 보다 쉽게 관리할 수 있음

  • IAM role : 특정 권한을 가진 IAM 자격증명. 이 Role을 사용함으로써 특정 사용자 혹은 어플리케이션에 혹은 AWS 서비스에 접근 권한을 위임할 수 있음

  • IAM policy : AWS의 접근하는 해당 권한을 정의하는 개체로 AWS IAM 리소스들과 연결하여 사용할 수 있음

IAM Policy structure

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "arn",
            "Condition" : {
               "condition": {
                  "key" : "value"
                  }
               }
          }
    ]
}
  • Effect : "Allow" 혹은 "Deny" 이다. 기본적으로 IAM 사용자에게 리소스 및 API 작업을 사용할 권한이 없으므로 모든 요청이 거부된다.

  • Action : action은 권한을 부여하거나 거부할 특정 API작업이다.

  • Resource : 작업의 영향을 받는 리소스이다. ARN(Amazon Resource Name)을 사용하거나 명령문이 모든 리소스에 적용됨을 표시하는 와일드카드 (*)를 사용한다.

  • Condition : 선택 사항으로서 정책이 적용되는 시점을 제어하는 데 사용할 수 있다. 다양한 조건을 넣어 권한을 부여할 수 있다.

hint: terraform plan -parallelism=30
이미 생성된 리소스가 있으면 거기에 대해 동시에 검사를 하며 기본값이 10이다. 숫자가 높아질수록 속도가 빨라짐.

정책 평가 로직

aws iam policy evaluation order

IAM의 policy들을 어떻게 평가하냐는 건데 반드시 위 검색어로 구글링해보는게 좋다. + 'aws iam ninja' 도 검색해서 공부하면 좋음

  • 그룹이든 유저이든 'Allow'라고 명시되어 있다면 합쳐서 OR 조건으로 동작한다.
  • 하지만, 'deny'가 있다면 가장 우선된다고 보면 된다. 만약 S3의 권한을 FullAccess를 가진다고 하더라도 어딘가에 s3 deny가 들어가져 있으면 그 deny가 먼저 우선된다.
  • 'Cross Account'라는 개념은 aws account가 나눠져서 권한이 들어가는 경우, 그때는 OR 조건이 아닌 AND 조건으로 움직인다.
  • 참고
    해당 경로에 액세스 키와 시크릿 키가 있으므로 확인할 수 있다.
    cat ~/ .aws/credentials
    하지만 해당 키가 업로드되거나 유출가능성이 있으면 안되므로 최대한 IAM role을 이용해서 서비스를 사용하는 것을 권장한다.

IAM role 할당하기

액세스키로 aws 모든 서비스를 이용할 수 있게하면 보안적으로 문제가 생길 수 있으므로 원하는 서비스에 대한 role을 생성한다.

그 이후, ec2에 해당 role을 연결하여 사용하면 보다 보안적으로 사용할 수 있다. 이렇게 해야 aws key가 유실되지 않고 잘 사용을 할 수 있다. 최대한 반드시 이렇게 사용하는 것을 권장한다.

0개의 댓글