: 데이터 센터의 집합
전 세계에 걸쳐서 존재한다. 리전에는 이름이 있다.(ex. us-east-1, eu-west-3, …)
대부분의 서비스들은 특정 리전에 연결되어서 국한
된다.
한 리전에서 어떤 서비스를 사용하다가 다른 리전에서 그 서비스를 사용하려고 하면 서비스를 처음 사용하는 것이 된다.
✅ Q. 새로운 애플리케이션을 출시하려는 경우, 어떤 리전을 선택하면 좋을까요?
A. ‘상황에 따라 다르다’
가용 영역은 리전 내에 존재한다.
각각의 리전은 많은 가용 영역을 가지고 있다. 대부분은 세개이다.
각각의 가용 영역은 여분의 전원 네트워킹, 통신 기능을 갖춘 개별적인 데이터 센터
로 이루어져 있다.
재난을 대비해서 서로 영향을 미치지 않도록 설계되어 있다.
사용자를 생성하고 그룹에 배치하기 때문에 글로벌 서비스
에 해당된다.
우리는 모르는 사이에 이미 IAM을 사용했다. 계정을 생성할 때 루트 계정을 만들었는데, 이는 기본으로 생성되는 것이다. 이 계정은 오직 계정을 생성할 떄만 사용
되어야 한다.
하나의 사용자는 조직 내의 한 사람에 해당이 된다. 필요 하다면 사용자들을 그룹으로 묶을 수 있다.
그룹에는 사용자만 배치할 수 있다. 다른 그룹을 포함시킬 수 없다.
Fred처럼 그룹에 포함되지 않는 사용자도 존재할 수 있다.
또, 한 사용자가 다수의 그룹에 속할 수 있다.
사용자와 그룹이 AWS 계정을 사용할 수 있도록 허용
하기 위해서이다.
허용을 위해서는 이들에게 권한을 부여해야 한다.
이를 위해
사용자 또는 그룹에게 정책, 또는 IAM 정책
이라고 불리는 JSON 문서를 지정한다.
➡️ 이 정책들을 사용해 사용자들의 권한을 정의할 수 있게 된다.
AWS에서는 모든 사용자에게 모든 것을 허용하지 않는다. 새로운 사용자가 너무 많은 서비스를 실행하여 큰 비용이 발생하거나, 보안 문제를 야기할 수 있기 때문이다.
따라서
AWS에서는 최소 권한의 원칙
을 적용한다.
Developers 그룹에 정책을 연결한다. 이렇게 하면 정책이 그룹의 모든 구성원에게 적용된다.
Alice, Bob과 Charles 모두 권한을 얻으며 정책의 상속이 가능하다.
두 번째는 Operations 그룹으로 다른 정책을 적용한다. David와 Edward는 Developers 그룹과 다른 정책을 적용 받는다.
Fred라는 사용자가 있다고 하면 그룹에 속하지 않을 수도 있다. 이런 경우에는 사용자에게만 연결이 가능한 인라인 정책
이라는 걸 생성할 수도 있다.
그리고 만약 Charles와 David가 감사팀에 속한다고 하면 감사팀에도 정책을 연결할 수 있다.
Charles와 David는 감사팀의 정책도 상속하게 된다.
그룹과 사용자들의 정보가 침해당하지 않도록 보호해야 한다.
이를 위한 두 가지 방어 메커니즘
이 있다.
첫 번째 방법은 비밀번호 정책의 정의이다. 비밀번호가 강력할수록 계정의 보안이 철저해지기 때문이다.
AWS에서는 이 메커니즘을 필수적으로 사용하도록 권장한다.
MFA
= password you know + security device you own
계정이 침해당하지 않는다.
지금까지는 관리 콘솔을 통해서 AWS에 access 했다.
하지만 AWS에 액세스하는 방법은 세 가지가 있다.
사용자 이름 및 비밀번호와 MFA
로 보호된다.
액세스 키
에 의해 보호된다.
액세스 키란 자격 증명으로 터미널에서의 AWS 액세스를 가능하도록 해준다.
애플리케이션 코드 내에서 AWS의 API를 호출하고자 할 때 사용되는 방식이다.
CLI와 SDK 방식 모두 액세스 키
로 보호가 된다.
공유해서는 안된다.
CLI를 사용하면 AWS 서비스의 공용 API로 직접 액세스가 가능하다.
윈도우용 CLI 설정
Installing or updating the latest version of the AWS CLI - AWS Command Line Interface
SDK는 소프트웨어 개발 키트이다. 특정 언어로 된 라이브러리의 집합이다.
따라서 프로그래밍 언어에 따라 개별 SDK가 존재한다.
SDK는 터미널 내에서는 사용하는 것이 아니라 코딩을 통해 애플리케이션 내에 심어 둔다. 애플리케이션 내에 자체적으로 AWS SDK가 있는 것이다.
다양한 프로그래밍 언어를 지원한다. (JavaScript Python, PHP, .NET, Ruby, Java, Go Node.js, C++)
AWS 서비스 몇 가지는 우리의 계정에서 실행해야 한다.
이를 위해서는 사용자와 마찬가지로 AWS 서비스에 권한을 부여해야 한다.
➡️ IAM Role
IAM Role은 사용자와 같지만 실제 사람이 사용하도록 만들어진 것이 아니고 AWS 서비스에 의해 사용되도록 만들어졌다.
예를 들어
, EC2 인스턴스를 만들려고 한다. EC2 인스턴스는 AWS에서 어떤 작업을 수행하려고 한다. 그러기 위해서는 EC2 인스턴스에 권한을 부여해야 한다.
IAM Role을 만들어 이들을 하나의 개체로 만든다.
EC2 인스턴스가 AWS에 있는 어떤 정보에 접근하려고 하면, IAM Role을 사용한다. 올바른 권한을 부여한 경우, 접근할 수 있게 된다.
IAM 자격 증명 보고서 (계정 수준)
계정에 있는 사용자와 다양한 자격 증명의 상태를 포함한다.
IAM 액세스 관리자 (사용자 수준)
사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.