1. IAM(Identity and Access Management)
IAM은 AWS 리소스에 대한 안전한 액세스와 관리를 제공하는 서비스입니다. IAM을 통해 AWS 계정의 사용자를 제어하고 그룹을 생성 및 관리하며, 다양한 AWS 리소스에 대한 접근 권한을 세부적으로 설정할 수 있습니다.
1) 루트 사용자
- AWS 계정을 처음 생성할 때 부여되는 계정으로, 결제 관리를 포함한 계정의 모든 권한을 가지고 있습니다.
- 높은 수준의 보안이 필요하기 때문에, 관리 목적 이외의 다른 용도로 사용하는 것을 권장하지 않습니다.
- 다중 인증(MFA) 설정을 권장하여 추가 보안을 유지합니다. MFA는 일회용 패스워드를 사용하여 계정 보호를 강화합니다.
2) 사용자 및 그룹 관리
- IAM 사용자: IAM을 통해 생성한 사용자 계정으로, 한 사람 혹은 하나의 어플리케이션을 의미합니다. 이 사용자 계정은 AWS 관리 콘솔에 접근할 수 있는 로그인 권한과 필요에 따라 특정 AWS 서비스에 대한 접근 권한을 부여받습니다.
- IAM 그룹: 여러 사용자를 그룹으로 묶어 동일한 접근 권한을 부여 가능합니다. 이를 통해 권한 관리를 보다 효율적으로 할 수 있습니다.
3) MFA 설정 방법
1. 루트계정 접속 후에 보안 자격 증명 클릭
2. MFA 할당
3. MFA 정보 입력(구글 Authenticator를 다운 받아서 MFA로 이용할 수 있습니다.)
2. IAM 권한 관리 방법
IAM은 사용자를 정의하고, 그룹으로 묶고, 권한 정책을 적용하는 다양한 방법을 제공합니다.
- 사용자: AWS리소스에 접근할 수 있는 개별 서비스 계정입니다.
- 그룹: 여러 사용자를 하나의 논리적인 단위로 묶어 관리하는 방법입니다. 동일한 접근 권한을 여러 사용자에게 부여해야 할 때 효율적으로 사용할 수 있습니다.
- 정책: 정책은 AWS 리소스에 대한 사용 권한을 명시적으로 정의한 문서입니다. JSON 형식으로 작성되며, 어떤 액션(작업)이 어떤 리소스에 허용되는지 또는 거부되는지를 명시합니다. 정책은 개별 사용자, 사용자 그룹, 역할(Role)에 적용될 수 있습니다.
- 역할: IAM 역할(Role)은 특정 AWS 리소스에 대한 접근 권한을 다른 신뢰할 수 있는 엔티티(예: IAM 사용자, 다른 AWS 서비스, 외부 아이덴티티 제공자 등)에 부여할 수 있게 해줍니다. 역할은 사용자와 달리 인증 정보를 직접적으로 연관짓지 않으며, 일시적인 권한을 부여하는 데 주로 사용됩니다.
- IAM 사용자 생성 실습
1. 우선 그룹을 생성합니다.
2. 해당 그룹에 적용할 정책을 추가합니다.
3. IAM에서 사용자생성을 누르고 AWS Managemet Console을 활성화하고 사용자 지정 암호를 입력합니다.
4. 사용자에 정책을 부여할때 그룹에서 추가하는 방법과 직접 정책을 연결하는 방법이 있습니다. 여기서는 그룹을 추가하여 정책을 설정합니다.
5. 사용자 계정 생성이 완료되었습니다. 해당 계정으로 로그인하여 권한이 부여된 서비스를 이용할 수 있습니다.
- 다음은 S3에 접근하려고 할때 사용자, 그룹, 정책, 역할이 적용되는 과정입니다.
3. 정책(Policy) JSON 형식
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow"
"Action": [
"s3:GetObject",
"ec2:*",
],
"Resource": "*"
}
]
}
- Version: 정책의 버전을 나타냅니다. 대부분의 경우 "2012-10-17" 버전을 사용합니다.
- Statement: 하나 이상의 권한 부여 또는 거부 명령을 포함하는 문(statement)의 배열입니다.
- Effect: 정책의 허용(Allow) 또는 거부(Deny)를 나타냅니다.
- Action: 정책이 적용되는 작업을 정의합니다. 작업은 `"서비스:작업"` 형식으로 지정되며, 여기서 `"*"`은 모든 작업을 의미합니다.
- Resource: 정책이 적용될 AWS 리소스를 정의합니다. 이 예제에서는 `"*"`을 사용하여 모든 리소스에 대해 정책을 적용합니다.
4. 권한 경계
AWS IAM의 권한 경계(permissions boundary)는 IAM 역할이나 사용자에게 부여된 권한의 최대 범위를 정의하는 정책입니다. 즉, 권한 경계는 특정 IAM 엔티티(사용자 또는 역할)가 사용할 수 있는 권한의 한계를 설정하여, 실제로 부여된 권한이 권한 경계에 의해 제한되도록 합니다.
1. 예를 들어 다음과 같이 모든 리소스에 대해 권한을 부여한 사용자가 있습니다.
2. 권한 경계에서 EC2에 대해서 ReadOnlyAccess만 부여합니다.
3. 그러면 해당 사용자 계정에서 EC2를 생성하려고 할때 권한이 없기 때문에 실패합니다.
요약하면 권한 경계는 사용자가 실제로 수행할 수 있는 작업의 최대 한계를 설정합니다.
5. 역할(Role)의 기능
AWS IAM에서 역할(Role)의 기능은 다음과 같습니다.
1. 서비스 간 접근: AWS 서비스 간에 필요한 권한을 안전하게 전이할 수 있게 하며, 예를 들어 EC2 인스턴스가 S3 버킷에 접근할 수 있도록 합니다.
2. 임시 권한 부여: 역할은 특정 AWS 리소스나 서비스에 대한 권한을 일시적으로 부여하여, EC2 인스턴스, Lambda 함수, 또는 다른 AWS 서비스가 필요한 작업을 수행할 수 있도록 합니다.
3. Cross-account 접근: 다른 AWS 계정의 리소스에 접근할 수 있도록 하여, 여러 계정 간에 권한을 공유하고 협업할 수 있는 환경을 제공합니다.
- 다음과 같이 EC2에서 S3서비스에 접근할 때 역할을 적용하는 방법에 대해 보겠습니다.
1. ec2 콘솔에 접속한 후에 aws s3 ls s3:[버킷이름] 명령어로 버킷의 파일 내역을 가져옵니다. 이때 해당 ec2에서는 s3에 대한 읽기 권한이 없으므로 실패합니다.
2. IAM에서 역할을 생성합니다.
3. AWS서비스에서 EC2를 선택합니다.
4. 권한정책에서 S3를 읽을 수 있는 정책을 선택합니다.
5. 역할 이름을 작성합니다.
6. 해당 역할을 ec2에 부여하기 위해서 ec2설정에서 IAM역할 수정을 누릅니다.
7. 방금 만든 역할을 부여합니다.
8. 역할 부여 후에, 정상적으로 결과를 가져오는 것을 확인할 수 있습니다.
6. IAM 모범 사례
AWS Identity and Access Management (IAM)를 통해 AWS 리소스에 대한 접근 권한을 안전하게 관리하기 위해서는 몇 가지 모범 사례가 제시되어 있습니다.
1. 루트 사용자는 사용하지 않기: 루트 사용자는 계정 설정 및 결제 관리에만 사용하고, 기타 작업에는 사용하지 않습니다.
2. 불필요한 사용자는 삭제: 필요하지 않은 IAM 사용자는 즉시 삭제하여 보안 위험을 줄입니다.
3. 가능하면 그룹과 정책을 사용하기: 개별 사용자보다는 그룹과 정책을 통해 권한을 관리해 효율성을 높입니다.
4. 최소한의 권한만을 허용하는 습관: 사용자나 역할에 필요한 최소한의 권한만을 부여하여 보안을 강화합니다.
5. MFA 사용하기: 다중 인증(MFA)을 활성화하여 계정의 보안 수준을 향상시킵니다.
6. Access Key 대신 역할을 활용하기: 장기 Access Key 대신 IAM 역할을 사용하여 일시적인 보안 토큰을 발급받고, 접근 권한을 부여합니다.
'컴퓨터 > AWS' 카테고리의 다른 글
AWS - VPC(Virtual Private Cloud) (0) | 2024.06.09 |
---|---|
AWS - ELB(Elastic Load Balancer) (0) | 2024.06.08 |
AWS - EC2 Auto Scaling (0) | 2024.06.06 |
AWS - Amazon Elastic Compute Cloud(Amazon EC2) (0) | 2024.06.05 |
AWS - AWS 개요 (0) | 2024.06.04 |