2022년 1월 25일 화요일

Cloud 환경에서의 효율적인 보안 및 인증 관리

IT 시스템을 구축하고 서비스를 구성하는데 AWS 와 Azure 를 비롯한 다양한 Cloud 서비스 환경을 이용하는 사용자는 각 Cloud 서비스 에서 자체적으로 제공하고 있는 다양한 보안 관련 서비스들을 활용하여 보안 침해 위협에 대비하고 사고를 방지해야 한다. 제공 되는 서비스1 로는 인증 및 접근 제어를 담당하는 IAM 서비스를 비롯하여 모니터링, 데이터 암호화 및 보호 서비스 등이 해당된다.

Cloud 서비스 제공하는 기본 보안 서비스와 더불어 시스템 개발 및 운영하는 과정 중에 요구되는 여러 가지 종류의 보안 관련 정보, 예를 들면 각 VM Instance 에 원격 접속하기 위해 사용하는 SSH Key, 데이터베이스에 사용 되는 계정명과 비밀번호 또는 외부 API 호출을 사용하기 위해 사용 되는 Access Token 에 대한 관리 방안도 고려하는 것이 필요하다. 기본적으로 IAM 서비스를 통해 내부 Token 또는 정책을 설정하여 서비스에 대한 인증 및 접근 제어를 하는 것이 원칙이지만 SSH Key 나 계정/비밀번호 를 기반한 서비스 접근에 대해서는 내부 Token 과의 연동 등을 기반한 관리 기능은 아직 지원되지 않는 부분들이 존재하기 때문이다.

업무를 지원하다보면 API 사용을 위한 Access Token 을 Source Code 상에 Hard Coding 하거나 계정명 및 암호는 Excel Sheet 등 Plain Text 로 정리되어 해당 업무 담당자들에게 공유하며, Instance 에 접근하기 위한 SSH Key 는 해당 업무에 담당자들의 업무 PC 에 저장되어 활용되는 것을 종종 보게 된다. 테스트 프로젝트 또는 소규모 시스템에서는 관계 없을 수 있겠지만, 실제 업무를 위한 운영 환경에 대해서는 주의가 필요하다.

업무 담당자 개개인의 업무 PC를 세세히 제어하기 쉽지 않아 계정명/암호를 담고 있는 문서나 SSH Key 를 안전하게 관리하는 것이 쉽지 않고 Git 같은 Code 저장소를 통해 Source Code 를 관리하면서 의도치 않게 Token 값을 유출하게 될 수 있기 때문이다. 또한 Cloud 서비스 내 다양한 서비스들과 연계가 필요하다거나 추가 서비스 구성 등을 통해 빠르게 변화하고 확장되어가는 시스템에 대해 보안 및 인증 관리포인트도 함께 늘어나게 되기 때문에 이에 대해 유연하게 대응할 수 있는 관리 방안을 고려해야 한다.

이를 위해 IAM 서비스와 연계하여 오픈소스 기반의 보안 인증 관리 서비스를 구성하여 위에서 다룬 민감한 정보를 보다 효율적으로 관리하게 되는데 대표적으로 Vault 2 를 꼽을 수 있다. ‘Manage Secrets and Protect Sensitive Data, Secure dynamic infrastructure across clouds and environments’ 라는 컨셉으로 다양하게 변화하는 Cloud 환경에서 민감하게 제어되어야 하는 Secrets (Token, 암호, 인증서, SSH Key 등) 을 안전하게 보관하고 제어할 수 있도록 해주는 저장소 서비스로 소개되고 있다.

Hashicorp Vault Triangle

Vault 에 포함된 주요 구성요소는 아래와 같다.

  1. Auth Method: Vault 에 연결 시 필요한 인증 수단을 일컫는다. AWS, Azure, GCP 등 Cloud 서비스에서 제공하는 IAM과 연동하거나 사내 자체 LDAP 혹은 계정/비밀번호 를 사용해서 Vault 에 대한 인증을 처리하게 되고, 인증이 정상 진행되면 Client Token이 발급되게 되고 이후부터 사용자는 Token 을 이용하게 된다. Token 에는 인증된 사용자 식별 및 부여된 정책 등의 정보를 담고 있다.
  2. Storage Backend: 암호화 된 Data 가 저장되는 저장소를 의미한다. Hashicorp 의 Consul, AWS의 S3, MySQL 등 다양한 종류의 Storage 를 지원한다.
  3. Secret Engine: Secret Data 를 생성, 저장, 암호화 하는 역할을 수행한다. Key/Value 구성의 Secret 부터 Cloud 서비스의 IAM과 연계한 Dynamic Secret 기반 인증 생성 등 다양한 형태의 Engine을 활용할 수 있다.

위의 구성을 기반으로 Vault 가 지원하는 주요 기능은 아래와 같다.

  • Secure Secret Storage: Key/Value 형태의 Secret Data 를 암호화 하여 저장
  • Dynamic Secret: On-demand 형태의 Secret 생성 지원, 예를 들어 AWS EC2 에 구성된 App이 S3 Bucket 에 접근이 필요할 경우 유효한 기간 및 권한을 Vault 에 요청하면 Vault 가 AWS Keypair 를 생성하여 App에 할당 하여 접근 허용
  • Leasing and Renewal: Vault 에 의해 생성된 Secret Data 는 모두 임대기간 (Lease) 이 부여되며, 정해진 Lease가 종료되면 자동으로 Revoke (폐기) 처리 된다. 사용자는 Vault API 를 통해 임대기간을 Renewal (갱신) 하여 사용할 수 있다.
  • Audit: 각 App 또는 사용자에게 부여된 Client Token 을 기반으로 상세한 감사 추적 기능을 제공하여 보안 사고 발생 시 어느 Client Token 으로 어떤 Instance 를 통해 어떤 침해가 있었는지 확인 가능

지금까지는 모두가 똑같은 SSH Key 를 각자의 업무 PC 에 저장해두고 사용함으로써 보안 유출에 노출되어 있었다면, Vault로 Cloud 환경 내 중앙집중식 보안 및 인증 관리소를 개설하여 SSH Key 할당을 중개함으로써 보안 사고의 위험 없이 모든 업무 담당자가 안전하게 시스템에 접근하는 것이 가능해진다.

Vault 는 지속적으로 다양한 Engine Plugin 과의 연동성을 확보함으로써 통합 보안 인증 관리소로서 확장해나가고 있다. 중앙집중식 관리 서비스로서 고가용성을 확보가 중요한데, 이는 다수의 Vault 를 토대로 구성하는 HA Mode 을 지원한다. 플랫폼에 제약 없이 Multi Cloud 환경에서도 지원이 가능하다.

현재는 기본 IAM 서비스와 Vault 같은 오픈소스 기반 서비스와 연동해서 사용하지만, IAM 서비스가 점차 진화하여 IAM 만으로도 위에에서 언급한 인증 관리가 가능할 것으로 생각된다. Cloud 서비스에서 자체 발급 및 관리하는 Token 과 ID 와 같은 정보를 기반으로 Cloud 환경 내 구성된 Instance 나 Database 를 비롯한 모든 구성 요소를 접근하고 구성 요소 간 연동 및 제어하는 것이다.

  1. 10 A guide to choosing cloud-based security services
  2. Hashicorp Vault

    Related Posts

    클라우드 환경에서의 데이터베이스 가용성
    Service Mesh 에서의 Control Plane, Consul
    Service Mesh 에서의 Sidecar

    Leave a Reply