8월 22일 Cloud Security (강원대학교 & QueryPie) 교육 내용 중 정리
1. 클라우드 보안과 Zero Trust
- Zero Trust: 네트워크 보안 모델로, 모든 접근 요청을 철저하게 검증하는 것이 핵심, 내부와 외부 모두 신뢰할 수 없으며, 항상 검증을 통해 권한을 부여한다.
- SASE (Secure Access Service Edge): 클라우드 보안과 네트워크 서비스를 통합하여 사용자가 어디서든 안전하게 네트워크에 접근할 수 있도록 돕는 아키텍처이다.
- 1Password: 비밀번호 관리 도구 - 유료
- Okta: 인증 및 권한 부여 솔루션, SAML(oidc) - SCIM과 같은 표준 프로토콜을 사용하여 다양한 애플리케이션과 연동된다.
- SAML(Security Assertion Markup Language)
- SAML : XML 기반의 표준 프로토콜로, 주로 Single Sign-On (SSO)을 구현하기 위해 사용
- 작동 방식:
- 사용자 요청: 사용자가 SSO를 지원하는 애플리케이션에 접근하려고 하면, 해당 애플리케이션(서비스 제공자, SP)이 사용자를 인증할 필요가 있음을 인식
- 인증 요청: SP는 사용자에게 인증을 요구하는 대신, SAML을 사용하여 신뢰할 수 있는 아이덴티티 제공자(IdP)에게 인증을 요청
- 인증 및 응답: IdP는 사용자를 인증하고, 인증된 사용자 정보(Assertion)를 SP에게 XML 형식으로 전달
- 접근 허가: SP는 이 정보를 검토하고, 사용자가 인증된 것을 확인한 후 애플리케이션 접근을 허가
- 주요 요소:
- IdP (Identity Provider): 사용자를 인증하는 시스템.
- SP (Service Provider): 사용자가 접근하려는 애플리케이션이나 서비스.
- Assertion: 인증된 사용자 정보를 포함한 XML 문서로, IdP에서 SP로 전달한다.
- 장점:
- 중앙 집중화된 인증 관리로, 보안성을 높이고 사용자 경험을 개선
- 다양한 애플리케이션 간의 호환성을 보장하며, 여러 서비스에 쉽게 통합할 수 있다.
- OIDC (OpenID Connect)
- OIDC : OAuth 2.0 프로토콜을 기반으로 하는 인증 레이어
- OAuth 2.0이 주로 권한 부여를 처리하는 반면, OIDC는 사용자 인증을 처리한다.OIDC는 RESTful API 및 JSON을 사용하며, 모바일 및 웹 애플리케이션에 적합한 경량 프로토콜이다.
- 작동 방식:
- 인증 요청: 사용자가 애플리케이션에 로그인할 때, 애플리케이션은 OIDC를 사용하여 아이덴티티 제공자(IdP)에게 인증을 요청
- 인증 및 토큰 발급: IdP는 사용자를 인증하고, 인증된 사용자를 나타내는 ID 토큰을 발급
- 정보 전송: 애플리케이션은 ID 토큰을 사용하여 사용자 정보를 받아옴
- 접근 허가: 사용자가 인증되면 애플리케이션은 접근을 허가하고, 필요한 경우 추가 정보를 요청 가능
- 주요 요소:
- ID 토큰: 사용자에 대한 인증 정보를 담고 있는 JSON 웹 토큰(JWT).
- 아이덴티티 제공자: 사용자를 인증하고 ID 토큰을 발급하는 서비스.
- 클라이언트: 사용자가 접근하려는 애플리케이션이나 서비스.
- 장점:
- RESTful 기반으로, 웹과 모바일 환경에서 쉽게 통합할 수 있다.
- OAuth 2.0과의 높은 호환성으로 인해, 다양한 서비스와 애플리케이션에 적용할 수 있다.
- SCIM (System for Cross-domain Identity Management)
- SCIM : 클라우드 애플리케이션에서 사용자 계정 및 권한을 자동으로 프로비저닝하고 관리하기 위한 표준 프로토콜
- 주로 SaaS(Software as a Service) 애플리케이션과 같은 환경에서 사용되며, 사용자 계정의 생성, 수정, 삭제를 자동화한다.
- 작동 방식:
- 사용자 프로비저닝: 조직이 새로운 직원을 채용하면, SCIM을 통해 사용자의 계정이 자동으로 생성되고, 필요한 권한이 부여된다.
- 자동 동기화: 사용자 정보나 권한이 변경되면, SCIM은 이를 자동으로 모든 연결된 시스템에 동기화
- 계정 비활성화: 직원이 퇴사하거나 권한이 필요하지 않게 되면, SCIM을 통해 계정이 자동으로 비활성화되거나 삭제된다.
- 주요 요소:
- SCIM 서버: 사용자 데이터를 저장하고 관리하는 시스템.
- SCIM 클라이언트: 사용자 계정 관리 요청을 SCIM 서버에 보내는 애플리케이션.
- 장점:
- 사용자 계정 관리의 자동화로 관리 효율성 증가
- 다양한 시스템 간의 사용자 데이터를 일관성 있게 유지 가능
- 표준화된 API를 사용하여 다양한 서비스와 쉽게 통합 가능
- RBAC(역할 기반 접근 제어)와 ABAC(속성 기반 접근 제어): 사용자에게 필요한 권한만을 최소한으로 부여해 보안을 강화한다.
2. DevOps와 DevSecOps
- DevOps: 개발(Development)과 운영(Operations)을 통합한 방식으로, 애플리케이션의 배포와 운영을 자동화하고 효율성을 높인다.
- DevSecOps: DevOps에 보안(Security)을 통합한 개념으로, 개발 주기 내내 보안을 고려하고 자동화된 도구로 취약점을 검사한다.
- CI/CD Pipeline: 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Delivery)를 의미하며, 소스 코드 변경 사항을 신속하게 빌드, 테스트, 배포할 수 있는 자동화된 워크플로우를 만든다.
- Harbor: 컨테이너 이미지 저장소로, 이미지 스캔을 통해 보안 취약점을 검사한다. 특히 Trivy를 활용하여 CVE(공통 취약점 및 노출)을 자동으로 찾아낸다.
- Argo CD: Kubernetes 환경에서 GitOps를 구현하는 도구로, 코드 변경 사항을 자동으로 배포해준다.
3. 컨테이너와 마이크로서비스
- 컨테이너 격리(Container Isolation): 컨테이너는 격리된 환경에서 애플리케이션을 실행하며, 서로 영향을 주지 않도록 보장한다.
- Istio: Service Mesh로, 마이크로서비스 간의 통신을 제어하고 관리한다. Sidecar 패턴을 통해 네트워크 제어를 단순화하고, 배포 및 운영을 쉽게 할 수 있도록 돕는다.
- Microservices(마이크로서비스): 애플리케이션을 작고 독립적인 서비스로 분리하여 개발, 배포, 확장이 용이하도록 도와준다.
4. 인프라 및 관리
- Immutable Infrastructure(불변 인프라): 인프라의 상태를 변경하지 않고 새로운 이미지를 생성하여 배포하는 방식으로, 보안 취약점 조치나 업그레이드 시 유용하다.
- IaC(Infrastructure as Code): 코드로 인프라를 관리하는 방법으로, Terraform과 같은 도구를 사용하여 자동화된 배포와 관리한다.
- Declarative API: 시스템의 상태를 코드로 정의하는 방식으로, 원하는 상태를 명시하고 시스템이 이를 자동으로 실현하게 한다.
5. 보안 취약점 관리
- CVE(Common Vulnerabilities and Exposures): 라이브러리나 패키지에서 발견된 보안 취약점을 나타내며, 각종 도구를 통해 관리된다.
- CCE(Common Configuration Enumeration): OS, 시스템 설정에서 발생할 수 있는 보안 취약점
- CWE(Common Weakness Enumeration): 코드 상의 취약점으로, OWASP Top 10과 같은 리스트를 통해 주요 웹 취약점을 관리할 수 있다.
- DAST와 SAST: 각각 동적 애플리케이션 보안 테스트(DAST)와 정적 애플리케이션 보안 테스트(SAST)로, 코드의 취약점을 사전에 식별합니다.
6. 참고 리소스와 도구
- Kodekloud.com: DevOps와 클라우드 관련 학습 플랫폼.
- AWS Skill Builder: AWS에서 제공하는 클라우드 학습 플랫폼.
- CIS Benchmarks: 시스템과 네트워크 장비의 보안 설정 기준을 제공하는 리소스.