Blocking : 특정 자원에 대한 접근 혹은 사용을 제어하는 것
IAM은 Blocking의 영역, 가장 강력함
Encrypting : 공기되는 정보에 대해서 식별 불가능한 정보로 암호화하는 것
Hiding : 정보에 관한 접근을 특정 경로 혹은 명령어로 접근하는 것
IAM user : AWS내에서 생성하는 사용자로 AWS와 상호작용하는 사용자 혹은 어플리케이션을 의미
IAM group : IAM User의 집합이고, Group을 사용함으로써 다수 사용자에 대하여 동일한 권한을 보다 쉽게 관리할 수 있음
IAM role : 특정 권한을 가진 IAM 자격증명. 이 Role을 사용함으로써 특정 사용자 혹은 어플리케이션에 혹은 AWS 서비스에 접근 권한을 위임할 수 있음
IAM policy : AWS의 접근하는 해당 권한을 정의하는 개체로 AWS IAM 리소스들과 연결하여 사용할 수 있음
{
"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' 도 검색해서 공부하면 좋음
액세스키로 aws 모든 서비스를 이용할 수 있게하면 보안적으로 문제가 생길 수 있으므로 원하는 서비스에 대한 role을 생성한다.

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