AWS의 리소스 접근을 안전하게 관리하는 시스템으로, IAM은 AWS를 안전하게 이용하기 위한 기능을 제공하며 주로 인증과 접근 허가 기능을 구현한다.
AWS는 대시보드 방식 외에 프로그램을 통해 리소스를 조작하는 시스템도 제공한다. 사용자가 대시보드 같은 방식으로 조작할 때는 ID와 비밀번호를 이용하지만 프로그램으로 조작할 때는 액세스 키 정보를 이용한다.
그런데 루트 사용자는 높은 접근 권한을 가지므로, 루트 사용자 권한을 이용해 프로그램으로 AWS 리소스를 조작하는 것은 권장하지 않아 루트 사용자의 액세스 키는 없는 상태로 둬야 한다.
보안 자격 증명 화면으로 접속하면 아래와 같이 액세스 키 항목이 존재한다.
활성화 된 키가 있다면 삭제하자.
루트 사용자 권한에 비해 메일 주소와 비밀번호로 로그인 하는 인증 방식은 매우 취약하다. 따라서 더 안전한 방식인 MFA를 권장한다. AWS에서는 비밀번호 + 인증 디바이스 두 가지로 MFA를 수행한다. MFA 인증을 진행하려면 MFA 애플리케이션을 설치해야 한다. 나는 Google Authenticator를 설치했다.
보안 자격 증명 페이지에서 MFA 할당 버튼을 클릭한다.
디바이스 이름과 Authenticator app을 선택한다.
Google Authenticator 앱으로 QR 코드를 스캔한 뒤, 인증 코드를 입력한다.
MFA 디바이스가 할당되었다.
루트 사용자는 AWS의 모든 리소스에 접근할 수 있는 권한을 가지고 있기 때문에 AWS 계약 해지, 사용자 관리 외에는 이용하지 않는 것이 바람직하다.
VPC 생성, EC2 인스턴스 생성과 같은 개발 작업은 일반 사용자, 즉 IAM 사용자를 만들고 권한을 부여해 개발해야 한다.
IAM 대시보드에서 사용자 페이지에 접속 후, 사용자 생성 버튼을 클릭한다.
AWS 관리 콘솔에서 작업하는 IAM 사용자를 생성할 것이다. 권장 방식인 Identity Center 방식으로 진행하겠다.
다음 버튼을 클릭하면 IAM Identity Center에서 사용자 세부 정보를 지정한다.
할당할 그룹을 선택한다. 그룹이 없다면 그룹 생성 버튼을 클릭해 그룹을 생성 후 진행하자.
사용자 검토 및 추가 화면에서 검토 후 생성을 완료한다.
IAM Identity Center의 사용자 탭을 클릭하면 IAM 사용자가 생성된 것을 확인할 수 있다.
IAM 사용자도 MFA를 활성화 해 보안을 강화하자.
IAM Identity Center로 만든 계정은 AWS 홈페이지에서 로그인 할 수 없다. IAM Identity Center에서 제공하는 AWS 액세스 포털 URL로 로그인 할 수 있다.
AWS 액세스 포털 URL은 IAM Identity Center 대시보드 설정에서 확인 가능하다.
IAM 사용자를 생성했지만 권한이 없어서 할 수 있는 것이 없다.
IAM Identity Center의 권한 세트를 클릭하자.
권한 세트 생성 버튼을 클릭하면 권한을 지정할 수 있다. 나는 사용자 지정 권한 세트로 진행하겠다.
나는 AWS 관리형 정책에서 PowerUserAccess와 IAMFullAccess를 선택했다. 두 정책 모두 AWS 리소스와 IAM에 대한 모든 접근 권한을 가지지만 AWS 계정 자체에 대한 계약 해지는 할 수 없어 루트 사용자보다는 안전하다.
PowerUserAccess
AWS 리소스에 대한 모든 접근 권한을 가진다.
IAMFullAccess
IAM에 대한 모든 접근 권한을 가진다.
권한 세트 이름, 설명 그리고 세션 기간을 설정한다.
권한 세트를 생성했으니 이제 IAM 사용자에게 권한을 부여해야 한다. 대시보드에서 AWS 계정 버튼을 클릭하자.
부여할 계정을 선택하고 우측의 사용자 또는 그룹 할당 버튼을 클릭한다.
개별 사용자에게 할당할 수도 있고 그룹에 할당할 수도 있다. 그룹에 개별 사용자를 추가한 상태이므로 그룹에 할당하겠다.
권한 세트를 지정한다.
검토 후 제출한다.
AWS 계정에서 관리 계정을 클릭하면 그룹과 권한 세트를 확인할 수 있다. 지정한 그룹에 권한 세트가 정상적으로 할당되었다.
IAM 계정으로 로그인 결과, 권한이 부여되었음을 알 수 있다.
AWS로 시작하는 인프라 구축의 정석
https://velog.io/@sungmo738/AWS%EB%A1%9C-%EC%9D%B4%EC%82%AC%ED%95%98%EA%B8%B0-2-IAM-Identity-Center#%EA%B6%8C%ED%95%9C%EC%84%B8%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0