본문 바로가기
클라우드 보안

클라우드 보안 [세 번째 정리]

by 할 수 있다 ! 2024. 3. 28.

안녕하세요 ! 

 

이번 글은 클라우드 보안 세 번째 정리를 해보려고 합니다.

 

 

클라우드 보안 

 

* AWS IAM

 

AWS IAM은 "Identity and Access Management"의 약자로, AWS(아마존 웹 서비스)에서 제공하는 서비스 중 하나입니다. 이 서비스는 AWS 리소스에 대한 사용자의 액세스를 관리하고 보안하는 데 사용됩니다.

 

1. 사용자 및 그룹 관리 : IAM 을 사용하여 AWS 계정에 대한 액세스를 요청하는 다양한 사용자와 그룹을 생성하고 관리할 수 있습니다. 

 

2. 권한 관리 : IAM을 사용하여서 개별 사용자 또는 그룹이 특정 AWS 리소스 및 서비스에 대한 액세스 권한을 설정할 수 있습니다. 이것을 통해 보안을 강화하고 필요에 따라서 사용자에게 필요한 권한을 부여할 수 있습니다. 

 

3. 임시 보안 자격 증명 제공 : IAM 을 사용하여 안전한 방식으로 액세스 자격 증명을 관리하고 임시 자격 증명을 생성할 수 있습니다. 

 

4. 관리 및 감사 : IAM 을 사용하여 AWS 리소스에 대한 액세스 및 작업을 모니터링하고 기록할 수 있습니다. 이것은 보안 감사 및 규정 준수를 지원하며, 사용 패턴을 이해하고 비정상적인 활동을 탐지 할 수 있도록 도와줍니다.

 

 

IAM 은 AWS 에서 중요한 보안 요소 중 하나이며, 안전한 애플리케이션 및 리소스 관리를 위해 필수적 입니다.

 

 

IAM 자체는 추가 요금이 없고 무료로 사용할 수 있습니다. IAM 사용자가 사용한 AWS 에는 과금이 되지만, IAM 자체는 추가 요금이 없고 AWS 계정에 제공되는 기능이다. 

 

* IAM 그룹과 IAM 정책 

 

IAM 사용자, IAM 역할 두 가지 모두에 필요한 최소한의 기능을 부여하고 필요한 사람에게만 전달하여 운영하는 것이 기본입니다. 한편, AWS 는 여러 개의 EC2 인스턴스나 S3 버킷을 다루는 경우가 많습니다. 각각의 서비스에 대해서 멤버 한 사람 한 사람에게 권한을 설정하는 것은 힘든 일이다. 

 

사용자는 IAM 그룹으로 그룹화 할 수 있습니다. 그룹화 하면 같은 권한을 부여하고 싶은 사용자를 일괄로 관리할 수 있습니다. 

 

IAM 정책은 실행자가 어떤 서비스에 접속할 수 있는지 정해진 규칙을 설정하는 기능이다. 실행자가 무엇을 할 수 있는지를 개별로 설정하는 것이 아니라 정책을 적용하는 형태로 설정합니다. 

 

 

* IAM 정책 설정하기 

 

IAM 정책은 무엇에 대해서 어떤 조작을 허가할지 말지를 설정하는 것이다. 실행자가 '어떤 일을 할 수 있는가'의 형태로 설정이 가능하고, 조작 대상에 대해서 '무엇을 허가할 것인가'의 형태로도 설정할 수 있습니다. 전자를 자격 기반 정책, 후자를 리소스 기반 정책이라고 합니다. 

 

IAM 정책은 자기만의 정책을 생성하는 것이 가능하지만 (고객 관리형 정책), 정해야 할 항목이 굉장히 많고 설정하다 실수하기도 쉽기 때문에 기본적으로는 미리 준비되어 있는 AWS 관리 정책을 사용하는 것을 추천한다.  

 

요약하자면 ! 

 

- AWS IAM 은 인증 방식입니다. 

 

- IAM 사용자는 사람에게 부여하는 IAM 입니다. 

 

- IAM 역할은 서비스나 프로그램에 부여하는 IAM 입니다. 

 

- IAM 정책은 IAM 사용자나 IAM 역할을 연결하여 접속 권한을 설정한다. 

 

- IAM 그룹은 IAM 사용자를 그룹화 한다. 

 

 

* 버킷 정책과 사용자 정책

 

1. 버킷 정책

 

- 버킷 정책은 특정 S3 버킷에 대한 액세스 권한을 제어하는 데 사용 합니다. 

 

- JSON 형식으로 작성되며, 버킷에 대한 다양한 작업 (읽기, 쓰기, 삭제 등)에 대한 권한을 설정할 수 있습니다. 

 

- 버킷 정책을 사용하여 공개적으로 일거나 쓸 수 있는 버킷을 만들거나 특정 IP 주소 범위에서 액세스를 허용하는 등의 설정을 할 수 있습니다. 

 

2. 사용자 정책 

 

- 사용자 정책은 IAM 사용자나 IAM 그룹에 대한 권한을 제어하는 데 사용 합니다.

 

- JSON 형식으로 작성이 되며, 특정 사용자 또는 그룹에 대한 S3 버킷 또는 객체에 대한 액세스 권한을 설정할 수 있습니다. 

 

- 사용자 정책을 사용하여 특정 사용자가 특정 버킷에만 읽기 또는 쓰기 권한을 갖도록 할 수 있습니다. 

 

이러한 정책들은 AWS 에서 세밀한 액세스 제어를 가능하게 합니다. 버킷 정책은 S3 버킷 전체에 대한 권한을 설정하고,

사용자 정책은 특정 IAM 사용자나 그룹에 대한 권한을 설정합니다. 함께 사용하여 AWS 리소스에 대한 보안을 강화하고  규정 준수를 유지할 수 있습니다. 

 

명시적 deny -> no -> 명시적 allow 가 있느냐 ? yes  

명시적 deny 가 있으면 deny 

만약에 명시적 deny, allow 둘 다 없다 ? 이러면 암시적 deny 

명시적 deny 하는 이유는 어디서 충돌할 수도 있을까 봐 미연의 방지이다. 

참고로 deny 는 거부한다는 뜻이다. 

 

 

* Amazon S3  

 

Amazon S3 는 스마트한 객체 스토리지 서비스 입니다. 여기서 객체 스토리지는 데이터를 객체 단위로 관리하는 형식을 말한다. 웹 서버나 회사 내의 파일 서버와 같이 인터넷상에 데이터를 저장하는 장소를 제공하는 것이다. 

 

최소한의 용량만으로 시작해도 된다. 

 

S3 의 가장 큰 특징은 기능이 많다는 점이다. 누구든지 쉽게 다룰 수 있도록 다양한 기능을 제공하는데 대표적인 기능은 웹 서버 기능과 쿼리 기능이다. 간단하게 웹 서버를 구축하거나 쿼리를 이용해 집계할 수도 있습니다. 물론 클라우드이기 때문에 확장성 그리고 축소도 간단하고 사용한 만큼 지불하면 되기 때문에 초기 투자 비용도 최소한으로 할 수 있습니다.  

 

 

* S3 의 특징 

 

1. 확장성 : EC2 와 마찬가지로 확장, 축소가 쉽다. 사용 목적에 맞게 다양한 스토리지 클래스가 준비되어 있고 수명 주기 정책을 사용하여 자동으로 이동이 가능합니다. 

 

2. 가용성, 내구성 : 99.9%의 데이터 내구성을 가지고 있어서 장애나 오류, 위협에 강합니다. S3 객체는 최소 4개의 가용 영역에 자동으로 복제되어 보존되기 때문에 어느 한쪽에 장애가 발생하더라도 계속 사용할 수 있습니다. 

 

3. 신뢰성 : 암호화 기능과 접근 관리 도구가 있어서 공격으로부터 지키기 쉽다. 각종 규정을 준수하며 감사 기능을 갖추고 있습니다. 

 

4. 다양한 관리 기능 : 스토리지 클래스 분석, 수명 주기 정책 등을 시작으로 각종 관리 기능이 있습니다. 관리 기능을 사용하면 실제로 사용 환경에 맞는 스토리지 클래스를 선택하는 것이 가능합니다. 

 

5. 스마트한 기능 : S3 Select 라는 데이터에 쿼리를 실행하는 기능과 서비스가 있습니다. 그 외에 아마존 아데나, 아마존 레드 쉬프트 스펙트럼 등의 분석 서비스와 호환되고, AWS 람다와 연동할 수 있습니다. 

 

 

정리하자면 ! 

 

S3는 URL 기반에 접근할 수 있는 웹 스토리지의 기능으로서 사이즈 리밋이 없어서 대용량 데이터를 저장한 뒤에 분석하는 그런 도구와 같이 연동해서 데이터 저장소로 쓰기에도 적합하고 여러 AWS 서비스와 같이 연동해서 로그나 백업을 할 수 있는 스토리지 공간으로도 많이 사용을 하고 있는 공간이 S3 입니다. 

 

S3 접근은 허락이 되어 있으면 접근할 수 있습니다. 

 

그리고 어떻게 접근 권한을 제어하냐면 퍼블릭 권한, IAM 정책 & 버킷 정책, 최소 권한의 원칙으로 접근 권한을 제어합니다. 

 

 

 

실습 ) 1. SSH 연결하고 EBS 생성 및 볼륨 연결

 

 

 

인스턴스 시작합니다.

 

 

 

키 페어 생성합니다. 키 페어 유형은 RSA 프라이빗 키 파일 형식은 .pem으로 설정합니다. 

 

 

 

 

네트워크 설정 MyPubSubnet 으로 설정합니다.

 

 

 

TESTSERVER 를 선택합니다.

 

 

 

 

그리고 bash shell 에서 다운 받은 키를 입력합니다.

 

 

uname -a, id 를 입력하면 정보를 확인할 수 있습니다. 

 

 

 

 

그 다음은 EC2 에 연결합니다.

 

 

이러면 콘솔 관리에서도 bash shell 의 명령어를 입력할 수 있습니다. 

 

 

그 다음 볼륨에 들어갑니다. 

 

 

 

 

볼륨 생성을 클릭합니다.

 

 

크기 1GiB 로 설정합니다. 가용 영역은 a로 설정합니다.

 

 

 

그리고 방금 생성했던 볼륨에 들어가서 연결을 합니다.

 

 

디바이스 이름에 /dev/sdf 를 입력합니다.

 

 

 

 

다시 bash shell 에 돌아와서 리눅스 명령어를 입력합니다.

 

 

 

볼륨 분리하고 삭제하고 싶으면 삭제하면 됩니다.