IAM이란 Identity & Access Management의 약자로 통합 계정 관리이다. 일반적인 환경과 SOA(Services-Oriented Architectur) 및 웹 서비스 환경에서도 IT관리에 대한 통합적인 관리방법을 제시, ID 및 액세스 관리를 효과적으로 수행할 수 있도록 지원하는 솔루션. 지속적으로 증가하는 내/외부 사용자의 계정을 생성, 수정, 삭제하는 작업을 자동화, 전사적 시스템 상에서 감사 기능을 제공해 고객들의 비즈니스를 보다 안정적이고 효율적으로 지원
1. SSO(Single-Sigh-On)
-한번의 인증으로 다양한 시스템에 추가적인 인증없이 접속가능
-다수의 인증 절차 없이 1개의 계정으로 다양한 시스템 및 서비스에 접속가능
-사용자 편의성과 관리 비용 절감 가능
2. EAM(Extranet Access Management)
-SSO,사용자 인증관리, 데이터에 대한 접근관리 기능제공
-단일메커니증을 이용한 솔루션
3. IAM(Identity Access Management)
-계정관리,프로비저닝 기능을 포함한 포괄적인 의미의 계정관리 솔루션
-EAM과 SSO 기능보다 포괄적으로 확장된 개념
-고객의 요구를 반영한 기능 조합 및 확장 가능
-업무 프로세스를 정의하고 관리하는 인프라
-효율성,생산성,보안성을 극대화 -> 확실한 이익 창출을 보장하는 비즈니스툴
AWS 리소스에 대한 액세스를 안전하게 관리해주는 서비스, AWS사용자 및 그룹을 만들고 관리하며 권한을 사용해 액세스를 허용 및 거부할 수 있음 암호나 액세스키를 공유하지 않고 계정 리소스를 관리하고 사용할 수 있는 권한 부여 가능하며, 멀티팩터인증(MFA)을 통한 계정보호 기능 제공
따라서 다양한 인증 처리 기능과 강력한 보안을 통해 AWS 내부 리소스에 대한 보호와 체계적인 자원관리 기능을 제공한다.
1. IAM 사용자(USER)
AWS에서 생성하는 개체로 AWS와 서비스 및 리소스와 상호 작용을 위해 그 개체를 사용하는 사람 또는 서비스를 말한다. IAM 사용자는 필요에따라 생성,수정,삭제 가능하며 하나의 AWS 꼐정에 최대 5,000개의 개정을 생성할 수 있고 각 IAM 사용자는 단 한 개의 AWS 계정만 연결된다. 신규 IAM 사용자는 아무 권한도 없으며 사용자 계정에 직접 권한을 할당 받거나 IAM 그룹, IAM 역활과 계정을 추가해 권한 및 자격증명을 할당 할 수있다.
2. IAM 그룹(Group)
IAM 사용자들의 집합, 그룹을 활용하여 사용자들에 대한 권한을 지정함으로 권한 관리가 쉬워짐.
3. IAM 역활(Role)
자격 증명 처리를 위한 권한 및 정책을 보유하고 있고 한 사용자만 연결되지 않으며 그 역활이 필요한 사용자 또는 그룹에게 연결할 수 있도록 만들어졌다.
AWS 내 리소스 및 자원관리를 위한 사용자와 그룹의 생성 및 관리기능을 통한 보안 자격증명을 생성할 수 있으며 API와 리소스에 대한 권한을 부여함으로써 내부 리소스에 보안을 통해 안전하게 리소스를 관리할 수 있다. 관리자 계정은 모든 작업이 가능한 권한을 보유하고 있기 때문에 EC2에 대한 정지 종료가 가능하다. 권한이 없다면 불가능하다.
사용자 계정을 통해 개별 리소스에 대한 세부적 권한을 부여할 수 있다.
IAM를 통해 제어할 수 있는 대상
- AWS 리소스를 관리하기 위한 콘솔에 대한 접속원한
- AWS 내부 리소스에 대한 접속 권한
- AWS 내 데이터에 API로 접속하는데 필요한 권한
1. IAM의 역활을 사용한 임시 자격증명 관리
영구적 자격증명이 필요하지 않고 일시적으로 임시 자격증명이 필요한 경우 액세스 권한을 부여할 수 있다. 지정된 간격 후에 만료되며 자격 증명이 만료된 후에는 그 자격 증명을 사용한 어떤 요청도 실패할 것이므로 일련의 새로운 자격 증명을 얻어야 한다.
2. IAM 자격증명 관리 기능
- 암호: AWS Management Consol, AWS 토혼 포럼등 AWS 보안페이지에 로그인 하는데 사용
- 액세스 키: API,CLI,SDK,PowerShell용 AWS도구에서 프로그래밍 방식으로 호출하는데 사용
- CloudFront 키페어: CloudFront가 서명된 URL을 생성하는데 사용
- SSH퍼블릭키: AWS CodeCommit 리포지토리를 인증하는데 사용
- X.509 인증서: 부 AWS 서비스에 안전한 SOAP프로토콜 요청을 수행하는데 사용
3. 타 인증 시스템과의 연동
IAM의 Federation 서비스를 사용하여 AWS리소스를 중앙에서 관리할 수 있다. Federation과 함께 SSO를 사용하여 회사 내에서 사용하는 LDAP나 Acrive Directory와 연동 가능하며 이를 통해 AWS계정에 액세스 할수 있다.
Federation을 이용하여 AWS 계정에 SSO
Federation 및 AWS IAM을 사용하여 AWS 계정에 SSO를 사용하도록 설정 가능 하며 사용자는 AWS 계정을 연합하여 회사 디렉터리의 자격증명을 사용하여 AWS 관리 콘솔 및 CLI에 로그인한다.
웹 및 모바일 앱에 Federation지원 추가
AWS Cognito를 사용하여 Cloud에서 실행되는 웹 및 모마일 앱에 Federation 지원 추가하면 된다. Cognito를 사용하면 모바일 및 웹 애플리케이션에 사용자 등록 및 로그인을 쉽게 추가 가능하다. Cognito를 사용하면 소셜ID 제공자를 통해 사용자 ID를 인증하거나 고유ID 시스템을 사용하여 사용자 인증 가능
SAML 없이 AWS리로스에 대한 SSO 액세스 활성화
AWS Directory Services for MS Actiove Directory를 사용하여 AWS 클라우드에서 실행되는 Windows 앱에 SSO를 사용하도록 설정이 가능하다. MS Active Directory 도메인과 AWS Cloud의 AWS MS AD 도메인 사이에 윈도우 보안 트러스트를 만들 수 있다. 트러스트를 사용하여 SSO를 관리콘솔 및 CLI로 설정하고 윈도우 서버용 EC2 SQL 서버용 RDS 및 Workspaces와 샅은 윈도우기반 워크로드로 설정이 가능하다.
1. IAM으로 이동
2. 그룹 메뉴 -> 그룹생성
3. 그룹이름을 지정하고 정책연결에서 AmazonEC2ReadOnlyAccess를 연결
4. 그룹생성
5. 사용자 -> 사용자 추가
6. 이름지정, 관리 콘솔 액세스, 비밀번호 지정
7. 그룹에 사용자 추가
8. 사용자 생성
9. IAM User 정보확인을 위해 콘솔 로그인 정보 복사
10. 로그아웃 -> URL을 입력 -> 정보입력 -> 로그인
11. 비밀번호 변경(필수)
12. EC2 인스턴스를 생성(아무렇게나)
생성하면 위와 같은 에러가 발생하게 되는데 이것은 처음에 그룹 권한을 EC2 ReadOnlyAccess 권한을 부여해서 그렇습니다. 따라서 생성, 종료, 삭제등을 하지 못합니다. 만약 이러한 권한을 부여하고 싶다면 EC2 FullAccess권한으로 변경해야 합니다(루트사용자)
1. AMI-> 역활->역활 만들기
2. AWS서비스에서 EC2클릭 후 다음
3. RDS FullAccess 선택 후 다음
4. 역활이름 설정 후 역활 만들기
5. EC2 인스턴스 생성 Linux로
6. 세부정보 구성에서 IAM역활을 만들어 둔것으로 지정
7. 인스턴스 검토후 EC2 생성
8. 퍼블릭 IP 정보 확인
9. Putty로 접근 시도->S3에 접근 시도(권한이 없어서 AccessDenied)
10. IAM Role로 이동 후 상세 페이지로 이동
11. 정책 연결 클릭 후 S3FullAccess를 선택
12. putty로 접근후 S3접근 시도
접근이 확인됨을 알 수 있다.