요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

*KubeCon + Cloud Native North America 2023에서 발표한 <Beyond Passwords: Keycloak's Contributions to IAM(Identity and Access Management) + Security>를 정리한 글입니다. 발표 내용을 3회로 나누어 발행합니다. 이번 1부에서는 키클락의 기능과 이점에 대해 살펴봅니다. 2부에서는 키클락을 구성하기 위해 실행해야 할 사전 작업을 알아보고, 3부에서는 키클락을 사용하여 EKS, GKE와 같은 관리형 쿠버네티스 클러스터를 통합인증 하여 관리하는 방법에 대해 살펴봅니다. 발표 자료는 KubeCon NA 2023 홈페이지에서 다운받으실 수 있습니다.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

신원확인, 통합인증관리 오픈소스 ‘키클락’을 알아보자

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인

*KubeCon + Cloud Native North America 2023에서 발표한 <Beyond Passwords: Keycloak's Contributions to IAM(Identity and Access Management) + Security>를 정리한 글입니다. 발표 내용을 3회로 나누어 발행합니다. 이번 1부에서는 키클락의 기능과 이점에 대해 살펴봅니다. 2부에서는 키클락을 구성하기 위해 실행해야 할 사전 작업을 알아보고, 3부에서는 키클락을 사용하여 EKS, GKE와 같은 관리형 쿠버네티스 클러스터를 통합인증 하여 관리하는 방법에 대해 살펴봅니다. 발표 자료는 KubeCon NA 2023 홈페이지에서 다운받으실 수 있습니다.

 

1부: 신원확인, 통합인증관리 오픈소스 ‘키클락’을 알아보자

2부: 키클락 구성을 위한 기나긴 사전 작업 한번에 보기

3부: 키클락을 활용한 통합 인증 실습하기

 

KubeCon + Cloud Native North America 2023에 참가해 발표한 메가존 GCP 클라우드 팀 조훈(좌)과 이수진(우)

 

이번 1부에서 살펴볼 내용은 다음과 같습니다.

 

  1. 키클락에 대한 간단한 소개
  2. IAM의 의미
  3. 인증과 인가의 차이점
  4. 키클락을 사용할 때 대표적인 이점
  5. 키클락에서 통합 인증을 위해서 사용하는 기법
 

키클락에 대한 간단한 소개 

키클락은 신원(Identity)을 확인하고 통합 인증 관리(Access Management)를 해 줄 수 있는 오픈소스입니다. 키클락은 2023년 4월에 CNCF(Cloud Native Computing Foundation)에 인큐베이팅(incubating) 레벨로 합류하였습니다. 주요 관리 주체는 레드햇입니다.

 

[그림 1] 키클락 소개 문구 (이미지 출처: https://www.cncf.io/projects/키클락/)

 

키클락이 쿠버네티스와 같은 컨테이너 오케스트레이션에서 차지하는 위상을 알고자 하신다면 다음의 링크를 통해서 왼쪽 상단에 있는 키클락을 확인해 보시는 것도 좋습니다.

 

[그림 2] 2024 쿠버네티스 표준 아키텍처 (출처: 본인 깃허브, 키클락 부분 강조 필요)

 

키클락에서 언급하는 신원 확인 및 통합 인증 관리라는 의미로 쓰이는 IAM에 대해서 이미 클라우드 서비스를 사용하시는 분들이라면 한 번쯤은 들어보셨을 것입니다. 하지만 IAM은 클라우드 서비스에 국한 되어 사용되는 것은 아닙니다. IAM에 대해서 익숙하지 않은 분들을 위해서 이를 우선 설명하도록 하겠습니다.

 

 

IAM의 의미

[그림 3] IAM (출처: 발표 문서)


IAM(Identity and Access Management)은 한마디로, 식별할 수 있는 '특정 대상'에게 리소스에 대해 적합한 접근 '권한'을 부여하는 관리 시스템입니다. 여기서 '특정 대상'은 Email 같은 사용자 계정이나, 특정 서버가 될 수 있고 '권한'은 CRUD(create, read, update, delete) 같은 권한(Permission)이나, 다수의 권한이 하나로 묶인 역할(Role)이 될 수 있습니다.

 

따라서 IAM은 특정 대상을 확인하는 인증(Authentication, Authn)과 인증 이후 리소스에 접근할 수 있는 권한을 부여하는 인가(Authorization, Authz)로 이루어져 있습니다. 그러므로 IAM을 이해하기 위해서는 인증과 인가를 이해할 필요가 있습니다. 다음 그림과 함께 인증과 인가에 대해서 정리해 보겠습니다.

 

 

인증과 인가의 차이점

인증(Authentication)

인증은 IT를 제외하고도 우리 일상에서 굉장히 많이 사용되는 개념입니다. 대표적인 예시로는 인터넷뱅킹을 사용하기 위해서 뱅킹 애플리케이션 상에서 우리가 공동인증서(공인인증서)를 통해서 송금자가 본인임을 확인하는 것도 인증으로 볼 수 있습니다.

 

여기서 또 다른 예시를 들자면, KubeCon과 같은 행사에서는 입장하는 사람들의 신원을 확인하기 위해서 신분증 및 여권과 KubeCon 행사 입장권을 구매 내역으로 본인임을 증빙하여 아래와 같은 KubeCon 입장을 위한 티켓을 받을 수 있습니다.

 

[그림 4] 쿠버콘 디트로이트 2022 행사 참여자라는 신원 확인 (출처: 메가존 유튜브)

 

이 티켓에는 이름, 소속, 그리고 행사장에서의 역할이 쓰여있습니다. 그래서 KubeCon 행사장에서 이 티켓을 패용하고 있다면 행사장 입구를 지키는 사람이 티켓을 보고, 이 사람이 KubeCon 행사장에 입장이 가능한지 판별합니다. 이 절차를 인증이라고 합니다. (사실 QR을 찍어서 정확하게 확인합니다.)

 

인가(Authorization)

인가는 인증을 통해서 대상이 허용되는 사람이라는 것을 안 이후에 일어나게 됩니다. 예를 들면 IT 컨퍼런스라면 행사 참여자는 크게 발표자와 청중으로 나누어질 것입니다. 이때 모든 행사 참석자가 발표자로 인가되지 않기 때문에 발표자 단상에 올라서 발표할 수는 없을 것입니다. 하지만 발표자라고 인가가 된 사람이라면 아래의 그림과 같이 발표자로서 무대에 올라가서 발표를 할 수 있습니다! 이와 같은 것을 ‘특정 권한을 인가 받았다’고 말할 수 있습니다.

 

[그림 5] 쿠버콘 시카고 2023 행사에서 키클락으로 발표 진행 중인 사진 (출처: 개인)

 

 

키클락을 사용할 때 대표적인 이점

그런데 인증/인가라는 개념이 키클락을 통해서만 이루어질까요?

 

우리가 이미 즐겨 사용하고 있는 아이디와 비밀번호에는 인증/인가가 이미 포함되어 있습니다. 하지만 아이디와 비밀번호에는 치명적인 단점이 존재하는데, 모두 다 기억하고 있어야 한다는 것입니다. 그리고 보안적인 관점에서 모든 아이디와 비밀번호를 쉽게 작성하는 것은 매우 안 좋습니다.

 

[그림 6] 웃자고 만든 비밀번호 예시... 하지만 아무도 웃지 않았다 (출처: 장표)

 

위의 그림은 웃자고 만든 것이기는 하지만, 실제로 근거가 있는 게, 비밀번호가 쉬워서 탈취되는 경우가 꽤 많이 있습니다. 아래 통계는 2023년 기준으로 가장 많이 사용된 비밀번호 입니다.

 

'Top 20 most common passwords of 2023'

RANK

PASSWORD

TIME TAKEN TO CRACK

NUMBER OF TIMES USED

1

123456

< 1 Second

4,524,867

2

admin

< 1 Second

4,008,850

3

12345678

< 1 Second

1,371,152

4

123456789

< 1 Second

1,213,047

5

1234

< 1 Second

969,811

6

12345

< 1 Second

728,414

7

password

< 1 Second

710,321

8

123

< 1 Second

528,086

9

Aa123456

< 1 Second

319,725

10

1234567890

< 1 Second

302,709

[그림 7] 2023년에 가장 많이 사용된 비밀번호 순위 20 (출처: [CNBC] Most overused passwords in the world — make sure yours isn’t on the list)

 

보안 안정성 측면에서 안전한 비밀번호를 만들기 위해서는 다음과 같은 방법을 권고하고 있습니다.

  • 모든 계정에 강력하고 고유한 비밀번호가 설정되어 있는지 확인하세요.
  • 비밀번호는 대문자, 소문자, 숫자, 기호를 조합하여 사용하세요.
  • 비밀번호보다는 기억하기 쉬운 최소 14자 이상의 비밀번호 문구를 사용하세요.
  • 여러 계정에서 비밀번호를 재사용하지 마세요
  • 소셜 미디어 프로필(생년월일, 배우자 또는 애완동물 이름 등)에서 찾을 수 있거나 다른 사람에게 알려진 정보를 비밀번호에 사용하지 마세요.
  • 특히 민감한 데이터가 포함된 계정의 경우 2단계 인증이 설정되어 있는지 확인하세요.
  • 안전한 비밀번호 생성기를 사용하여 임의의 문자열을 생성하세요
  • 사전에 나오는 단어와 일반적으로 사용되는 비밀번호를 사용하지 마세요.
  • 강력한 비밀번호와 안전한 저장소를 생성하려면 비밀번호 관리자를 사용하고 비밀번호 저장소에 길고 복잡한 비밀번호 문구를 설정하세요.

[그림 8] 비밀번호 베스트 프랙티스 2023 (출처: World Password Day 2023 – Password Tips and Best Practices)

 

위 권고대로 비밀번호를 생성할 때 ‘계정마다 고유한 비밀번호를 만들기'는 어려울 뿐만 아니라 관리하기도 어렵습니다. 이런 문제가 개인으로서는 각자의 방법으로 진행하면 되지만, 조직에서는 정책적으로 시스템적으로 해결해야 합니다.

 

이런 경우에 보통 일반적인 기업에서는 중앙 집중 시스템에서 계정을 인증하고 각 서비스에 인증된 사용자임을 알려주는 방법을 사용하고 있습니다. 이러한 기능을 구현하는 대표적인 서비스가 윈도의 AD(Active Directory)를 이용한 LDAP 인증입니다. 그리고 이와 같은 형태를 바로 SSO(Single-Sign On)라고 부릅니다.

 

SSO는 사용자가 한 가지 로그인 정보로 여러 애플리케이션과 서비스에 대해 동시에 인증을 받는 방법입니다. 위에서 예시로 설명한 회사 내부의 AD를 이용한 통합 인증 외에도 각 서비스에서 소셜 로그인을 통해서 로그인을 진행하는 것도 SSO를 통한 기능입니다.

 

[그림 9] 요즘IT의 로그인 화면에도 포함되어 있는 소셜 SSO 기능

 

사실 SSO 기능은 OktaOneLogin 처럼 유명한 Identity 관리 솔루션이 유료로 제공하는 기능이지만 키클락은 오픈소스이기에 우리는 이 기능을 무료로 구현할 수 있습니다.

 

 

키클락에서 통합 인증을 위해서 사용하는 기법

키클락은 위와 같은 통합 인증을 위해서 인증 표준인 'OIDC(OpenId Connect / OAuth 2.0(Open Authorization 2.0)'를 사용할 수 있습니다. 물론 OIDC 외에도 'SAML 2.0(Security Assertion Markup Language)'을 사용할 수 있습니다.

 

이와 같은 표준 프로토콜은 다양한 인증 사업자(IDP, Identity Provider, 쉽게 말하면 구글 깃허브 카카오등 에서 서비스 형태로 제공합니다. 따라서 손쉽게 통합 인증을 구현할 수 있습니다.

 

위에서 키클락의 여러 기능들에 인증과 인가가 들어있다고 말씀드렸던 이유가 바로 여기 있습니다. 키클락이 준수하는 'OIDC'와 'SAML 2.0'가 바로 인증과 인가를 위한 표준 프로토콜이기 때문입니다.

 

[그림 10] 키클락으로 인증을 대동단결 (출처: 발표 자료)

 

여기까지 키클락의 개념, IAM, 인증/인가 그리고 키클락의 이점과 통합 인증을 위한 기법에 대해서 대해 알아보았습니다.

다음 2부에서 키클락으로 멀티 쿠버네티스를 통합 인증하는 방법에 대해 알아보겠습니다.

 

[그림 11] 키클락으로 통해서 EKS와 GKE를 통합 인증 관리 (출처: 발표 자료)

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

좋아요

댓글

공유

공유

댓글 1
CNCF 앰버서더|클라우드엔지니어
106
명 알림 받는 중

작가 홈

CNCF 앰버서더|클라우드엔지니어
106
명 알림 받는 중
시스템/네트워크 IT 벤더의 경험 이후, 메가존 GCP 클라우드 팀에서 쿠버네티스와 연관된 모든 프로젝트에 대한 Tech Advisor 및 Container Architecture Design을 제공하고 있다. 페이스북 ‘IT 인프라 엔지니어 그룹’의 운영진을 맡고 있으며, 오픈 소스 컨트리뷰터로도 활동한다. 지식 공유를 위해 인프런/유데미에서 앤서블 및 쿠버네티스에 관한 강의를 하기도 한다. 책 <컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커> 등 3권을 썼다. CNCF(Cloud Native Computing Foundation) 앰버서더로서 쿠버네티스 생태계가 더 활발하게 퍼질 수 있도록 기여하고 있다.

좋아요

댓글

스크랩

공유

공유

지금 회원가입하고,
요즘IT가 PICK한 뉴스레터를 받아보세요!

회원가입하기
요즘IT의 멤버가 되어주세요! 요즘IT의 멤버가 되어주세요!
요즘IT의 멤버가 되어주세요!
모든 콘텐츠를 편하게 보고 스크랩해요.
모든 콘텐츠를 편하게 보고 스크랩 하기
매주 PICK한 콘텐츠를 뉴스레터로 받아요.
매주 PICK한 콘텐츠를 뉴스레터로 받기
로그인하고 무료로 사용하기