IAM
: Identity and Access Management
의 약자입니다.IAM
에서는 사용자를 생성하고 그룹에 배치하기 때문에 글로벌 서비스
에 해당됩니다.예시)
"Version": "2022-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, ... ...
허용
하고 그 허용을 위해서는 이들에게 권한을 부여
해야 합니다."정책 (policies)"
이라 불리는 JSON 문서를 지정할 수 있습니다.AWS
에서는 모든 사용자에게 모든 것을 허용하지 않습니다.: AWS 계정을 사용하도록 허용
하고 그 허용을 위해서는 이들에게 권한을 부여
합니다.
예시)
"Version": "2022-10-17", "id": "S3-Account-Permissions", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal" : { "AWS": ["arn:aws:iam::4343243251454:root"] } "Action": "ec2:Describe*", "Resource": "*" }, ... ...
Version : 2022-10-17, 정책 언어 버전입니다.
ID : 정책을 식별하는 ID (선택사항)
Statement : 하나 또는 여러 개입니다.
Effect
: 정책에서 effect는 문장이 특정 API에 접근하는 걸 허용할지 거부할지 대한 내용입니다.Principal
: 특정 정책이 적용될 사용자, 계정, 혹은 역할로 구성됩니다.Action
: effect에 기반해 허용 및 거부되는 API 호출의 목록입니다.Resource
: 적용될 action의 리소스의 목록입니다.그룹
과 사용자
들의 정보가 침해당하지 않도록 보호하는 두 가지 방어 매커니즘비밀번호 정책의 생성
이 가능합니다.비밀번호 변경을 허용 또는 금지
할 수도 있습니다.만료
시켜 새 비밀번호 설정을 요구
할 수도 있습니다.비밀번호의 재사용
을 막을 수 있습니다.사용자들은 계정에 접근 권한이 있고 많은 작업을 할 수 있는데, 특히
관리자
일 경우에는 구성을 변경하거나 리소스를 삭제하는 등의 작업을 할 수 있습니다.
따라서적어도 루트 계정은 무슨 일이 있어도 반드시 보호
해야 하며 전체 IAM 사용자들도 보호를 해야 합니다.
MFA
: Password + 보안장치
장점
: 사용자가 해킹을 당해 비밀번호가 누출된 상황이라고 해도 해커에게는 로그인을 위해 휴대전화 등 사용자 소유의 물리적 장치가 추가로 필요해질 테니 계정이 침해당하지 않는다는 점입니다.
- AWS Console
- 사용자 이름 및 비밀번호와 다요소 인증으로 보호됩니다.
- AWS CLI
- CLI는 명령줄 인터페이스를 의미하며 AWS CLI는 명령줄 셸에서 명령어를 사용하여 AWS 서비스들과 상호작용할 수 있도록 해 주는 도구입니다.
- 모든 명령어가 aws로 시작하기 때문에 CLI를 사용합니다.
- CLI를 사용하면 AWS 서비스의 공용 API로 직접 액세스가 가능합니다.
- CLI를 통해 리소스를 관리하는 스크립트를 개발해 일부 작업을 자동화할 수 있습니다.
- CLI는
오픈 소스
로, GitHub에서 모든 소스 코드를 찾으실 수 있으며 AWS 관리 콘솔 대신 사용되기도 합니다.- 컴퓨터에서 설정하고 액세스 키에 의해 보호됩니다.
- 액세스 키란 자격 증명입니다. (뒤에 나옵니다.)
- AWS SDK
- SDK는 소프트웨어 개발 키트입니다.
- 특정 언어로 된 라이브러리의 집합으로 프로그래밍 언어에 따라 개별 SDK가 존재합니다.
- SDK는 터미널 내에서는 사용하는 것이 아니라 코딩을 통해 애플리케이션 내에 심어 두어야 하는 겁니다.
- 애플리케이션 내에 자체적으로 AWS SDK가 있는 것입니다.
- 다양한 프로그래밍 언어를 지원합니다.
- AWS로부터 애플리케이션 코드 내에서 API를 호출하고자 할 때 사용되는 방식입니다.
CLI와 SDK, 두 방식 모두 완전히 동일한 액세스 키로 보호가 됩니다.
AWS 서비스 몇 가지는 우리의 계정에서 실행해야 합니다.
이를 위해서는 사용자와 마찬가지로 어떤 권한이 필요합니다.
따라서 AWS 서비스에 권한을 부여해야 합니다.
그러기 위해서는IAM 역할
이라는 것을 만들어야 합니다.
IAM 역할
은 사용자와 같지만 실제 사람이 사용하도록 만들어진 것이 아니고 AWS 서비스에 의해 사용되도록 만들어졌습니다.예)
EC2 인스턴스를 만든다면 EC2 인스턴스는 가상 서버입니다. EC2 인스턴스는 AWS에서 어떤 작업을 수행하려고 할 수 있습니다. 그러기 위해서는 EC2 인스턴스에 권한을 부여해야 합니다. 이를 위해 IAM 역할을 만들어 이들을 하나의 개체로 만듭니다. EC2 인스턴스가 AWS에 있는 어떤 정보에 접근하려고 할 때 IAM 역할을 사용하게 될 것입니다.
만약 IAM 역할의 권한을 올바르게 부여한 경우 하려고 하는 호출에 접근하게 될 것입니다.
계정 수준
사용자 수준
자격 증명 보고서
를 만들어 사용자 관련 정보를 볼 수 있고IAM 액세스 관리자
를 사용하여 사용자의 최근 권한의 사용 내역을 확인할 수 있습니다