생성형 AI 활용한 클라우드&보안 전문가 양성 캠프
클라우드 컴퓨팅
참고 사이트:
https://aws.amazon.com/ko/what-is-cloud-computing/?nc2=h_ql_le_int_cc
클라우드 컴퓨팅이란 | 클라우드 컴퓨팅 소개 | Amazon Web Services
모든 유형, 규모 및 산업의 조직이 데이터 백업, 재해 복구, 이메일, 가상 데스크톱, 소프트웨어 개발 및 테스트, 빅 데이터 분석, 고객 대상 웹 애플리케이션 등 다양한 사용 사례에 클라우드를
aws.amazon.com
클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것을 말합니다. 물리적 데이터 센터와 서버를 구입, 소유 및 유지 관리하는 대신, Amazon Web Services(AWS)와 같은 클라우드 공급자로부터 필요에 따라 컴퓨팅 파워, 스토리지, 데이터베이스와 같은 기술 서비스에 액세스할 수 있습니다.
위 글은 클라우드 컴퓨팅에 정의입니다.
제 생각을 정리하자면,"클라우드 컴퓨팅은 유기적으로 사용자가 사용할때 비용을 내고 그 외에는 비용을 지불하지 않는 장점을 가지고 있다."라고 정리 했습니다.
클라우드 컴퓨팅의 장점으로는
- 서버, 네트워크 장비, 회선, 보안 장비 등을 구매하기 위한 비용 절감
- 장비의 관리가 필요 없어 인건비 절감
- 계정만 있으면 즉시 사용 가능하고 서비스를 바로 사용하고 내릴 수 있음
- 인터넷만 있으면 어디에서든 접근이 가능
- 탄력적으로 자원을 활용 가능(스케일링)
- 자원에 즉각적인 대응이 가능
탄력적으로 자원을 활용 가능하고 즉각적인 대응이 가능하다는 장점이 있고
단점으로는
- 구축을 위한 별도의 인건비는 발생하지 않지만 클라우드 전문 인력에 대한 비용 발생 가능
- 유지보수를 위해 MSP 등 전문 업체의 도움이 필요할 수 있음
- 계정 및 서비스가 늘어나면 관리의 부담이 증가
- 접근(계정, 암호키 등)에 대한 관리가 제대로 이루어지지 않을 경우 자료 유출 및 해킹 피해로 이어질 수 있음
- 자원에 대한 관리가 제대로 이루어지지 않을 경우 과다한 비용이 청구될 수 있음
접근에 대한 관리가 제대로 이루어지지 않으면 피해가 크게 오고, 과다한 비용이 청구 될 수 있다는 단점이 있습니다.
*조심 또 조심*일화로 예전에 학교에서 들은 내용인데 신입 사원이 람다를 지속적으로 호출 했다가,비용을 많이 지불 했다는 얘기도 들었습니다.
클라우드 4대 배포 모델 (NIST)
퍼블릭 클라우드(Public Cloud)
이용을 신청하는 누구에게나 회원 가입 및 이용을 허용하는 클라우드
AWS, Azure, GCP, KT, Naver, NHN, Samsung Cloud Platform 등
프라이빗 클라우드(Private Cloud)
기업 또는 기관 전용 클라우드
자체 데이터 센터 내에 전용의 클라우드 환경 조성에 사용
OpenStack, CloudStack 등
커뮤니티 클라우드(Community Cloud)
특정 산업 또는 특정 업무 종사자의 수요에 집중하는 클라우드
고객관계관리(CRM) 및 마케팅/세일즈 특화 클라우드인 Salesforce, 글로벌 해운 선사인 Maersk와 IBM이 만든 해운 산업 클라우드인 TradeLens 등
하이브리드 클라우드(Hybrid Cloud)
퍼블릭과 프라이빗 클라우드를 병용하는 형태이며 국내외 주요 기업 및 기관 대부분이 채택하고 있는 배포 모델
클라우드 3대 서비스 유형 (NIST) - 서비스 요소에 대한 권한과 책임 범위를 기준으로 분류
Infrastructure as a Service (IaaS)
- 일반적으로 네트워킹 기능, 컴퓨터(가상 또는 전용 하드웨어) 및 데이터 스토리지 공간에 대한 액세스를 제공
- 사용자가 운영체제부터 미들웨어, 런타임, 그리고 데이터와 어플리케이션까지 직접 구성하고 관리
- 대표적인 서비스: Amazon EC2, Azure Virtual Machine
Platform as a Service (PaaS)
- IaaS 형태의 가상화된 클라우드 위에 사용자가 원하는 서비스를 개발할 수 있도록 개발 환경(Platform)을 미리 구축해, 이를 서비스 형태로 제공
- 대표적인 서비스: AWS RDS, Redhat OpenShift
Software as a Service (SaaS)
- 클라우드 인프라 위에 소프트웨어를 탑재해 제공하는 형태로 IT 인프라 자원뿐만 아니라 소프트웨어 및 업데이트, 버그 개선 등의 서비스를 업체가 도맡아 제공
- 대표적인 서비스: Slack, Microsoft 365
공동 책임 모델
참고 사이트:
https://aws.amazon.com/ko/compliance/shared-responsibility-model/
공동 책임 모델 – Amazon Web Services(AWS)
보안과 규정 준수는 AWS와 고객의 공동 책임입니다. 이 공유 모델은 AWS가 호스트 운영 체제 및 가상화 계층에서 서비스가 운영되는 시설의 물리적 보안에 이르기까지 구성 요소를 운영, 관리 및
aws.amazon.com
고객 책임
- IaaS의 경우 고객은 게스트 운영체제의 관리(업데이트, 보안 패치 등), 고객이 인스턴스에 설치한 모든 애플리케이션 소프트웨어 또는 유틸리티의 관리, 인스턴스별로 AWS에서 제공한 방화벽(보안 그룹)의 구성 관리에 대한 책임
- 데이터 관리(암호화 옵션 포함), 자산 분류, 적절한 허가를 부여하는 IAM 도구 사용에 책임
AWS 책임
- AWS 클라우드에서 제공되는 모든 서비스를 실행하는 인프라를 보호할 책임
- AWS 클라우드 서비스를 실행하는 하드웨어, 소프트웨어, 네트워킹 및 시설로 구성
AWS 요금
https://aws.amazon.com/ko/pricing/?pg=WICC-N&tile=learn_more
사용량에 따라 지불
AWS에서는 사용한 만큼만 요금을 지불하므로 기업이 민첩성과 응답성을 유지하고 항상 필요한 규모를 충족할 수 있습니다.
사용한 만큼 지불하는 요금을 통해 예산을 과도하게 할당하거나 변화에 대한 응답성을 개선하지 않고도 변화하는 비즈니스 요구에 손쉽게 대응할 수 있습니다. 사용한 만큼 지불하는 모델에서는 예측이 아니라 필요에 따라 비즈니스에 대응하므로 용량을 오버프로비저닝하거나 언더프로비저닝하는 위험을 줄일 수 있습니다.
필요에 따라 서비스 비용을 지불함으로써 혁신과 창조에 주의를 집중하여 조달의 복잡성을 줄이고 비즈니스의 탄력성을 높일 수 있습니다.
커밋을 통한 비용 절감(Savings Plans)
Savings Plans는 AWS 사용량에 대한 요금을 상당량 절감할 수 있는 유연한 요금 모델입니다. 이 요금 모델은 AWS 컴퓨팅, AWS Machine Learning 및 AWS 데이터베이스 서비스를 더 저렴한 요금으로 제공합니다. Savings Plans는 특정한 양(USD/시간으로 측정)의 AWS 서비스 또는 서비스 범주를 1년 또는 3년 기간으로 사용하는 약정을 조건으로 온디맨드보다 낮은 요금을 제공합니다.
1년 또는 3년 약정으로 Savings Plans에 가입할 수 있으며 AWS Cost Explorer에서 권장 사항, 성능 보고 및 예산 알림 기능을 활용하여 플랜을 손쉽게 관리할 수 있습니다.
더 많이 사용하여 더 적은 비용 지불
AWS에서는 대량 구매 할인을 받고 사용량 증가에 따라 상당한 비용 절감을 실현할 수 있습니다. S3와 같은 서비스 및 EC2에서 송신되는 데이터 전송 요금은 계층화되어 있습니다. 즉 더 많이 사용할수록 GB당 요금이 줄어듭니다. 또한, 데이터 수신 요금은 언제나 무료입니다. 따라서 AWS 사용 요구가 증가함에 따라 도입을 확장하면서 비용은 통제할 수 있는 규모의 경제의 이점을 활용할 수 있습니다.
조직이 성장함에 따라 AWS에서는 고객이 비즈니스 요구를 처리하는 데 도움이 되는 서비스를 확보할 수 있도록 옵션을 제공합니다. 예를 들어 AWS의 스토리지 서비스 포트폴리오는 데이터 액세스 빈도와 데이터 검색에 필요한 성능에 따라 비용을 줄일 수 있는 옵션을 제공합니다. 비용 절감을 최적화하기 위해서는 성능, 보안 및 안정성을 유지하면서 비용을 절감할 수 있는 적절한 스토리지 솔루션의 조합을 선택해야 합니다.
AWS 요금 계산기
단일 인스턴스를 실행하든, 수십 개의 개별 서비스를 실행하든, AWS 요금 계산기를 사용하여 월별 청구액을 추산할 수 있습니다. 계산기를 사용하면 개별 또는 여러 요금을 추산하고 템플릿을 사용하여 전체 솔루션을 살펴볼 수 있습니다.
AWS 프리 티어
무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어
이러한 프리 티어 혜택은 AWS 신규 고객에게만 제공되며 AWS 가입일로부터 12개월 동안 유효합니다. 12개월의 무료 사용 기간이 만료되거나 애플리케이션 사용량이 프리 티어 범위를 초과할 경우
aws.amazon.com
무료 평가판
이 프리 티어 오퍼는 처음 사용을 시작한 시점부터 사용 가능한 단기 평가판입니다. 평가판 기간이 만료된 경우에는 사용량에 따라 표준 서비스 요금을 지불하면 됩니다(전체 요금 내역은 해당 서비스 페이지 참조).
12개월 무료
이 프리 티어 오퍼는 AWS 신규 고객에게만 제공되며 AWS 가입일로부터 12개월 동안 유효합니다. 12개월의 무료 사용 기간이 만료되거나 애플리케이션 사용량이 프리 티어 범위를 초과할 경우에는 사용량에 따라 표준 서비스 요금을 지불하면 됩니다(전체 요금 내역은 해당 서비스 페이지 참조). 제약 조건이 적용되므로 자세한 내용은 이용 약관을 참조하세요.
언제나 무료 ⇐ 기본 사용량에 해당
이 프리 티어 오퍼는 12개월의 AWS 프리 티어 기간이 끝나도 자동으로 만료되지 않으며, 기존 및 신규 AWS 고객 모두에게 무기한으로 제공됩니다.
AWS 서비스(제품)
https://aws.amazon.com/ko/products/?pg=WICC-N&tile=learn_more
AWS는 컴퓨팅, 스토리지, 데이터베이스, 분석, 네트워킹, 기계 학습 및 AI, 모바일, 개발자 도구, IoT, 보안, 엔터프라이즈 애플리케이션을 비롯하여 광범위한 글로벌 클라우드 기반 제품을 제공하고 있습니다.
Amazon 이름으로 시작하는 서비스
AWS의 기본 빌딩 블록으로 볼 수 있으며, 대부분의 기본적인 클라우드 컴퓨팅 요구사항을 충족시키는 데 사용
Amazon EC2(Elastic Compute Cloud), Amazon S3(Simple Storage Service), Amazon RDS(Relational Database Service)
AWS 이름으로 시작하는 서비스
특별한 작업, 데이터 처리, 서버리스 컴퓨팅, 데이터 분석 등과 같은 더 특화된 작업을 위한 솔루션으로 사용
AWS Lambda, AWS Glue, AWS Step Functions
AWS 글로벌 인프라
https://aws.amazon.com/ko/about-aws/global-infrastructure/
글로벌 인프라 - AWS
aws.amazon.com
AWS 클라우드는 34개 지리적 리전 내의 가용 영역 108개에 걸쳐 있으며, 멕시코, 뉴질랜드, 사우디아라비아, 태국, 대만 및 AWS European Sovereign Cloud에 가용 영역 18개와 AWS 리전 6개를 추가하는 계획이 발표되었습니다.
https://aws.amazon.com/ko/about-aws/global-infrastructure/regions_az/?p=ngi&loc=2
리전
AWS에는 리전이라는 개념이 있습니다. AWS가 전 세계에서 데이터 센터를 클러스터링하는 물리적 위치를 리전이라고 합니다. 논리적 데이터 센터의 각 그룹을 가용 영역이라고 합니다. 각 AWS 리전은 지리적 영역 내에서 격리되고 물리적으로 분리된 최소 3개의 AZ(가용영역)로 구성됩니다. 흔히 리전을 단일 데이터 센터로 정의하는 다른 클라우드 공급자와 달리 모든 AWS 리전의 여러 AZ 설계는 고객에게 여러 가지 이점을 제공합니다. 각 AZ는 독립된 전원, 냉각 및 물리적 보안을 갖추고 있으며 지연 시간이 매우 짧은 중복 네트워크를 통해 연결됩니다. 고가용성을 중시하는 AWS 고객은 여러 AZ에서 실행되도록 애플리케이션을 설계하여 내결함성을 한층 더 강화할 수 있습니다. AWS 인프라 리전은 가장 높은 수준의 보안, 규정 준수 및 데이터 보호를 충족합니다.
AWS는 다른 어떤 클라우드 공급자보다 더 광범위한 국제적 입지를 제공하며, AWS의 국제적 입지를 지원하고 고객이 전 세계에서 서비스를 이용할 수 있도록 빠르게 새로운 리전을 열고 있습니다. AWS는 북미, 남미, 유럽, 중국, 아시아 태평양, 남아프리카 및 중동의 리전을 포함하여 여러 지리적 리전을 유지 관리하고 있습니다.
가용 영역
AZ(가용 영역)는 AWS 리전의 중복 전력, 네트워킹 및 연결이 제공되는 하나 이상의 개별 데이터 센터로 구성됩니다. AZ를 사용하면 단일 데이터 센터를 사용하는 것보다 더 높은 가용성, 내결함성 및 확장성을 갖춘 프로덕션 애플리케이션과 데이터베이스를 운영할 수 있습니다. AWS 리전의 모든 AZ는 높은 대역폭, 지연 시간이 짧은 네트워킹, 완전한 중복성을 갖춘 전용 메트로 광 네트워크와 상호 연결되어 있어 AZ 간에 높은 처리량과 지연 시간이 짧은 네트워킹을 제공합니다. AZ 간의 모든 트래픽은 암호화됩니다. 네트워크 성능은 AZ 간 동기 복제 기능을 충분히 수행할 수 있습니다. AZ는 고가용성을 위한 애플리케이션 분할을 용이하게 합니다. 애플리케이션 하나를 여러 AZ에 걸쳐 분할하면 기업의 격리가 더 원활하게 이루어지며 정전, 낙뢰, 토네이도, 지진 등과 같은 문제로부터 안전하게 보호됩니다. AZ는 다른 모든 AZ와 수 킬로미터에 상당하는 유의미한 거리를 두고 물리적으로 분리되어 있습니다. 다만 모든 AZ는 서로 100km(60마일) 이내의 거리에 위치합니다.
로컬 영역
https://aws.amazon.com/ko/about-aws/global-infrastructure/localzones/
AWS 로컬 영역은 일부 AWS 서비스를 최종 사용자 및 워크로드에 더 가깝게 배치하는 인프라 배포 유형입니다.
AWS 로컬 영역은 컴퓨팅, 스토리지, 데이터베이스 및 기타 엄선된 AWS 서비스를 최종 사용자에게 더 가까운 위치에서 실행할 수 있게 합니다. AWS 로컬 영역을 사용하면 미디어 및 엔터테인먼트 콘텐츠 작성, 실시간 게임, 저장소 시뮬레이션, 전자 설계 자동화, 기계 학습과 같이 지연 시간이 10밀리초 미만이어야 하는 매우 까다로운 애플리케이션을 쉽게 실행할 수 있습니다.
각 AWS 로컬 영역 위치는 최종 사용자에게 근접한 지역에서 Amazon Elastic Compute Cloud, Amazon Virtual Private Cloud, Amazon Elastic Block Store, Amazon File Storage, Amazon Elastic Load Balancing 등의 AWS 서비스를 사용하여 지연 시간에 민감한 애플리케이션을 실행할 수 있는 AWS 리전의 확장입니다. AWS 로컬 영역은 로컬 워크로드와 AWS 리전에서 실행 중인 워크로드 간의 고대역폭 보안 연결을 제공하여 동일한 API와 도구 세트를 통해 전체 리전 내 서비스에 원활하게 다시 연결할 수 있게 합니다.
AWS Wavelength
https://aws.amazon.com/ko/wavelength/
AWS Wavelength는 모바일 엣지 컴퓨팅 애플리케이션에 최적화된 인프라 제품입니다. Wavelength 영역은 AWS 컴퓨팅 및 스토리지 서비스를 통신 서비스 공급자(CSP)의 5G 네트워크에 포함하여 5G 디바이스에서의 애플리케이션 트래픽이 통신 네트워크 내의 Wavelength Zone에서 실행되는 애플리케이션 서버로 전송될 수 있는 AWS 인프라 배포 환경입니다. 이 서비스를 사용하면 애플리케이션 트래픽이 목적지에 도달할 때까지 인터넷에서 여러 홉을 거쳐야 하기 때문에 발생하는 대기 시간을 방지할 수 있으므로 고객이 최신 5G 네트워크에서 지원하는 대기 시간 및 대역폭의 이점을 최대한 누릴 수 있습니다.
AWS Outposts
https://aws.amazon.com/ko/outposts/
AWS Outposts는 진정으로 일관된 하이브리드 환경을 위해 거의 모든 온프레미스 또는 엣지 로케이션에 AWS 인프라 및 서비스를 제공하는 완전관리형 솔루션 패밀리입니다. Outposts 솔루션을 통해 온프레미스에서 기본 AWS 서비스를 확장하고 실행할 수 있으며 1U 및 2U Outposts 서버에서 42U Outposts 랙 및 다중 랙 배포에 이르기까지 다양한 폼 팩터에서 Outposts 솔루션을 사용할 수 있습니다.
AWS Outposts를 사용하면 일부 AWS 서비스를 로컬에서 실행하고 로컬 AWS 리전에서 사용 가능한 광범위한 서비스에 연결할 수 있습니다. 친숙한 AWS 서비스, 도구 및 API를 사용하여 온프레미스에서 애플리케이션과 워크로드를 실행하세요. Outposts는 온프레미스 시스템에 대한 빠른 액세스, 로컬 데이터 처리, 데이터 레지던시, 로컬 시스템과 상호 종속된 애플리케이션 마이그레이션이 필요한 워크로드 및 디바이스를 지원합니다.
https://docs.aws.amazon.com/whitepapers/latest/ec2-networking-for-telecom/outposts.html
AWS Outposts - Amazon EC2 Overview and Networking Introduction for Telecom Companies
AWS Outposts AWS Outposts is a family of fully managed solutions delivering AWS infrastructure and AWS services to virtually any on-premises or edge location for a consistent hybrid experience. Outposts allow you to extend and run AWS services on premises,
docs.aws.amazon.com
엣지 로케이션(Edge Location)
- https://aws.amazon.com/ko/cloudfront/features/?p=ugi&l=na
- 주로 클라우드 컴퓨팅에서 사용되는 용어로, 클라우드 서비스 제공자가 사용자에게 더 빠르고 효율적인 서비스를 제공하기 위해 전 세계 여러 지역에 분산 배치한 서버 위치를 의미
- Amazon CloudFront와 같은 서비스의 주요 구성 요소로, 콘텐츠 전송 네트워크(CDN)를 통해 사용자에게 빠르고 효율적인 콘텐츠 제공을 목표
- 엣지 로케이션에 콘텐츠를 캐싱해 사용자에게 더 짧은 지연 시간으로 콘텐츠를 전송
- 전세계 300개 이상의 엣지 로케이션
- 글로벌 배포 서비스인 AWS CloudFront, Global Accelerator에서 대표적으로 사용
글로벌 레벨 자원
전 세계 모든 AWS 리전에서 사용할 수 있는 자원
특정 리전에 종속되지 않고, 전 세계적으로 동일한 자원을 공유하거나 접근이 가능
글로벌 규모로 작동하고, 데이터를 여러 리전에 분산하거나 리전 간 복제하는 데 주로 사용
리전 레벨 자원
특정 리전 내에서만 존재하며, 리전 간에 독립적으로 운영
해당 리전 내에서만 사용 가능하며, 자원 간의 복제나 전송이 필요한 경우 명시적으로 설정해야 함
AWS IAM(Identity and Access Management)
https://aws.amazon.com/ko/iam/?nc2=h_ql_prod_se_iam
- https://aws.amazon.com/ko/iam/
- AWS 서비스 및 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스
- 사용자(users), 그룹(group), 역할(roles), 정책(policy)으로 구성
- 리전에 속하는 서비스가 아닌 글로벌 서비스
- IAM 보안 모범 사례
- https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
- https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/root-user-best-practices.html
- 루트 계정(AWS 회원 가입 시 만들어지는 계정)은 최초 사용자 계정 생성 이후 가능하면 사용하지 말 것
- 사용자 계정으로 서비스를 사용하고 사용자는 필요한 최소한의 권한만 부여 (최소 권한의 원칙)
- 루트 계정과 개별 사용자 계정에 강력한 암호 정책과 멀티팩터 인증(MFA) 적용
Security best practices in IAM - AWS Identity and Access Management
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com
AWS 계정
MFA device name 에는
본인을 특정할 수 있는 이름을 적어줍니다.
google Authenticator 앱을 설치 후
QR 코드 표시를 눌러서 보여지는 MFA 코드를 두번 입력합니다.
처음에 당황하지 마시고 바로 보여지는 코드 입력하고 끝나고 2번째 코드 입력하세요~
멀티 팩터 인증이 완료되었습니다. 이제 로그아웃 후 확인하시면 멀티 팩터 인증이 추가된 것을 확인하실 수 있을 거예요!
멀티 팩터 인증 코드를 입력 후 로그인 하시면 됩니다.
이제 멀티 팩터 인증을 해제 하는 법을 알아보시죠! 설정과 해제는 반드시 알아야 하죠 ㅎㅎ
콘솔 화면에서 사용자를 누른 후에 본인 계정을 선택하면 아래와 같은 창이 보입니다.
여기서 멀티 팩터 인증에 라디오 버튼을 클릭 한 후 "제거" 버튼을 누르면 제거 완료 됩니다.
사용자(user)
- AWS의 기능과 자원을 이용하는 객체
- 사람 또는 애플리케이션
사용자를 식별하는 방법
- 사용자 생성 시 지정한 이름
- 사용자의 고유 식별자
- ARN(Amazon Resource Name)
arn:aws:service:region:account-id:resource
- arn: 모든 ARN의 시작 부분
- aws: AWS를 나타내는 고정 값
- service: 리소스를 제공하는 AWS 서비스 (예: Amazon S3 버킷, AWS Lambda 함수, Amazon RDS 데이터베이스 등)
- region: 리소스가 위치한 AWS 지역 (선택적일 수 있으며, 서비스에 따라 다름)
- account-id: AWS 계정 ID
- resource: 서비스별로 리소스를 고유하게 식별하는 정보
이번에 사용자를 생성해보겠습니다.
user_발급받은 계정명
아래 내용 설정
권한 설정을 AmazonEC2FullAcess로 설정
내용 확인 후 사용자 생성 클릭
사용자가 생성 되면 csv 파일로 계정 정보 및 암호 발급가능
생성된 아이디로 로그인 하기
로그인 후 화면
IAM 서비스로 이동 ⇒ IAM 서비스 권한이 없으므로 대시보드에 권한 오류가 출력
EC2 서비스로 이동 ⇒ EC2 관련 대시보드가 정상적으로 제공되는 것을 확인
생성한 사용자를 삭제 하기
사용자 그룹(user group)
- 여러 사용자에게 공통으로 권한을 부여하기 위해서 만든 개념
- 여러 사용자에게 일관된 권한 정책을 쉽게 적용하는 것이 가능
권한(permission)
- AWS에서 제공하는 서비스나 자원에 어떤 작업을 할 수 있는지 여부를 명시한 규칙
예) 서울 리전에 있는 모든 EC2를 조회할 수 있다.
정책(policy)
- 자격 증명이나 리소스와 연결될 때 해당 권한을 정의하는 AWS의 객체
- 권한의 모음으로 사용자, 사용자 그룹, 역할에 적용이 가능
- 사용자, 사용자 그룹, 역할에 권한을 직접 적용할 수 없고, 정책을 생성한 후 적용해야 함
- https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/access_policies.html
자격 증명 기반 정책
- 자격 증명 기반 정책은 자격 증명(사용자, 사용자 그룹 및 역할)이 무슨 작업을 어느 리소스에서 어떤 조건에서 수행할 수 있는지를 제어하는 JSON 권한 정책 문서
- 관리형 정책
AWS 계정에 속한 다수의 사용자, 그룹 및 역할에 독립적으로 연결할 수 있는 자격 증명 기반 정책
- AWS 관리형 정책 - AWS에서 생성 및 관리하는 관리형 정책
- 고객 관리형 정책 - 사용자가 자신의 AWS 계정에서 생성 및 관리하는 관리형 정책. 고객 관리형 정책은 AWS 관리형 정책보다 정책에 대해 더욱 정밀하게 제어하는 것이 가능
- 인라인 정책
리소스 기반 정책
- S3 버킷과 같은 리소스에 연결하는 정책으로 지정된 보안 주체에 해당 리소스에 대한 특정 작업을 수행할 수 있는 권한을 부여하여 이러한 권한이 적용되는 조건을 정의
- 리소스 기반 정책은 인라인 정책이며, 관리형 리소스 기반 정책은 없음
- 모든 리소스가 지원하는 것은 아님
권한 경계
- 관리형 정책을 사용해 자격 증명 정책이 IAM 엔티티(사용자 또는 역할)에 부여할 수 있는 최대 권한을 설정하기 위한 고급 기능
- 엔티티의 권한 경계 설정을 통해 자격 증명 기반 및 관련 권한 경계 모드에서 허용되는 작업만 수행할 수 있음
- 리소스 기반 정책은 권한 경계에 제한을 받지 않음
해당 사용자는 권한 경계로 EC2FullAccess 권한을 설정했으므로, IMAFullAccess 권한을 가져도 IAM 작업을 수행할 수 없으며, EC2 관련 권한이 설정되어 있지 않으므로 EC2 작업도 할 수 없음 ⇒ 해당 사용자는 아무것도 할 수 없는 상태
JSON(JavaScript Object Notation, 자바스크립트 객체 표현식) 정책 문서
JSON 정책 문서의 구조
- 문서 상단에 정책 전반의 선택적 정보
- 하나 이상의 Statement로 구성
- 각 Statement에는 단일 권한에 대한 정보가 포함
- 정책에 여러 Statement가 포함된 경우 AWS는 이를 평가할 때 Statement 전체에 논리 OR를 적용
JSON 정책 요소
JSON 정책 구문 예시
자격 증명 기반 정책으로 example_bucket이라는 하나의 Amazon S3 버킷 목록을 암시된 보안 주체를 허용
{
"Version": "2012-10-17",
"Statement": {
"Resource": "arn:aws:s3:::exampel_bucket",
"Action": "s3:ListBucket",
"Effect": "Allow"
}
}
리소스 기반 정책으로 특정 AWS 계정 구성원이 mybucket 내 버킷 또는 객체에 수행할 수 있는 모든 작업을 허용
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Resource": [
"arn:aws:s3:::mybucket", ⇐ mybucket 버킷
"arn:aws:s3:::mybucket/*" ⇐ mybucket 버킷에 포함된 하위 버킷 또는 파일(객체)
],
"Action": "s3:*",
"Effect": "Allow",
"Principal": {
"AWS": [ "arn:aws:iam::account-id:rrot" ]
}
}
]
}
모든 리소스에 모든 동작을 허용
{
"Version": "2012-10-17",
"Statement": {
"Resource": "*",
"Action": "*",
"Effect": "Allow"
}
]
안전한 권한 부여 방법 ⇒ 최소 권한 부여
방법1. 모든 리소스에 모든 동작을 허용 → 필요 이상의 권한을 부여 → 안전하지 않음
{
"Resouce": "*",
"Action": "*",
"Effect": "Allow"
}
방법2. DynamoDB에 대한 액션을 구체화 ⇒ DynamoDB의 모든 테이블에 대해 read/write가 가능 → (접근하면 안 되는) 다른 테이블에 대해서도 접근이 가능하므로 안전하지 않음
{
"Resouce": "*",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Effect": "Allow"
}
방법3. 사용할 테이블을 한정(제한) ⇒ myDynamoDBTable에 대해서만 read/write하도록 제한
{
"Resouce": "arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Effect": "Allow"
}
방법4. 특정 조건을 명시 ⇒ IP 주소가 1.2.3.4인 곳에서 접근하는 경우에만 myDynamoDBTable에 read/wirte할 수 있도록 제한
{
"Resouce": "arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Effect": "Allow",
"Condition": [
"IpAddress": {
"aws:SourceIp": "1.2.3.4"
}
]
}
역할(role)
- 사용자가 아닌 특정 서비스에서 생성한 객체에 권한을 부여할 때 사용
예) 람다 함수가 S3 버킷에서 파일을 읽어 오려면, S3 버킷에 파일을 읽을 수 있는 권한 정책을 만든 뒤, 해당 정책으로 역할을 만들어 람다 함수에 지정해야 함