AWS

AWS 아이덴티티 관련 서비스와 여러 가지 기타 서비스에 대해 알아보자 (1)

S_N_Y 2024. 3. 13. 10:53

 

< Identity 관련 서비스 >

#0 STS Token Sevice (보안 토큰 서비스)

이 서비스는 AWS 리소스에 액세스할 수 있는 제한된 권한의 임시 자격 증명을 생성한다. 보안 액세스 키 같은 자격 증명을 생성할 수는 있지만 단기적인 자격증명으로 만료 기간도 설정할 수 있어 임시 자격 증명으로 적합한 서비스이다. 

사용자가 어떤 role에 액세스해서 그 역할을 활용하고자 한다면 STS API 호출을 통해서 역할게 권한을 위임한다. 그 결과로 임시 자격 증명을 얻게 되는데 액세스 키, 보안 키, 세션 키 총 세 가지 자격 증명이 있다. 

사용 사례는 간단하게 1. 자격 증명 페더레이션 : 외부 시스템에서 자격 증명을 관리하고 AWS에 액세스할 수 있는 STS토큰을 제공하는 것 2. 위의 그림과 같이 교차/동일한 계정의 액세스를 위한 IAM 역할도 하나의 사용 사례이다. (EC2에 IAM 역할을 제공했던 작업도 STS를 이용) 

 

#1 Amazon Cognito - 앱/웹 사용자를 관리하면서 소셜 로그인으로 유도해버리기

웹이나 모바일 애플리케이션 사용자에게 자격 증명을 제공하는 방법이다. 애플리케이션 사용자가 수만명 이 수준이되면 애플리케이션 사용자를 위해서 IAM 사용자를 만들면 안되니(회사 계정으로만 가능) 생겨난 서비스이다.

Cognito는 사용자에 대한 내부 데이터베이스를 갖고 모바일/웹 애플리케이션의 수백만명의 사용자들은 Cognito에 통합된 고그인 자격 증명을 갖게 하는 식이다. (소셜 로그인을 통해 리디렉션하는 거라고 생각하면 편하다)

=> AWS에서 사용자를 관리(DB만들기)하면서도 웹/모바일 애플리케이션을 구축할 계획이 있다면 쓰기 좋은 서비스

 

#2 AWS Directory Servises - AWS엔 없는 Microdoft Active Directory(AD)로 확장하기 ⤴️

먼저 AWS는 아니지만 Microsoft Active Directory(AD)를 살펴보자

AD 도메인 서비스를 가지는 모든 Window 서버에서 찾아볼 수 있다. 사용자 계정, 컴퓨터, 프린터, 파일 공유, 보안 그룹 등과 같은 객체의 데이터베이스이다..! AD를 사용하면 중앙 집중식 보안 관리가 가능하고 계정을 만들거나 권한을 할당할 수도 있다. 

기업 회선에 연결된 Window 노트북이 있다고 가정하면 사용자 이름은 어쩌구~ 비밀번호는 어쩌구2~라고 정의하는 도메인 컨트롤러도 있다. 

=> 도메인 컨트롤러에 연결되어 있으니 회사의 어떤 컴퓨터에서든 위에 정의해둔 사용자 이름, 비밀번호로 로그인할 수 있다. (어떤 서비스건 노트북이건간에 간단하게 로그인할 수 있다는 말이다)

 

AWS에서는 AD가 없다?🫥 - AWS로 AD 확장하기

AWS Directory Services를 사용해서 AD로 확장할 수는 있는데 3가지 방법만 간단하게 소개하고 마치려고 한다.

1. AWS Managed Microsoft AD : 로컬에서 사용자를 관리하고 멀티 팩터 인증(MFA)를 지원하는 AWS에 고유한 AD를 생성하게 해준다. (이미 온프레미스 AD가 있으면 양방향 연결로 설정할 수 있다) 

2. AD Connector : AWS에서 보낸 요청을 온프레미스 AD로 디리렉션하는 프록시인데 멀티 팩터 인증(MFA)도 지원하지만 사용자는 온프레미스 AD에 잔류해야 한다. (AD Connector에 연결하고 온프레미스 AD로 프록시 요청이 간다는 말이다)

3. Simple AD : 단순히 클라우드의 독립 실행형 AD로, Microsoft AD는 아니지만 AD호환이 가능한 AWS 관리형 디텍토리이다. (온프레미스 AD와는 결합 불가능) 

 

#3 AWS IAM Identity Center - 여러 AWS계정에 한 번에 액세스하기 ☑️ (Single Sign-On(SSO)의 후속 서비스)

조직의 모든 AWS 계정에 대해 한 번만 로그인하면 된다 => 여러 계정에 한 번에 액세스!

비즈니스 클라우드 애플리케이션인 SAML 2.0, EC2 윈도우 인스턴스도 SSO할 수 있다. 사용자는 로그인해서 해당 사용자가 액세스할 수 있도록 정의된 모든 항목에 액세스할 수 있고 사용자 데이터 저장 위치는 IAM Identity Center에 내장된 Built-in Identity Center(아이덴티티 저장소) 또는 3rd party 저장소를 사용할 수도 있다. 

IAM Identity Center 사용예시

로그인할 때 유저네임과 비밀번호를 입력하면 오른쪽 사진처럼  IAM Identity Center 포털에 액세스할 수 있는데 보면 그 유저가 가지고 있는 4개의 계정에 액세스할 수 있는 것을 볼 수 있다. 그 중 하나를 클릭하고 관리 콘솔을 클릭하면 특정 계정의 관리 콘솔에 바로 액세스할 수가 있다.

=> 즉, 모든 계정에 대해 4개의 로그인 계정을 기억하는 게 아니라 1개의 로그인 계정만 기억하면 된다..! (모든 사용자를 중앙에서 관리) 

 

< 기타 서비스 (1) >

#4 Amazon Workspaces - 서비스형 가상 데스크톱

서비스형 데스크톱인 DaaS 솔루션으로 Windows 또는 Linux 데스크톱을 쉽게 프로비저닝한다. 가상 데스크톱 인프라(온프레미스 VDI) 삭제를 허용하는 것

=> 즉, Windows 노트북으로 클라우드를 사용하려면 WorkSpaces를 사용하는 것

KMS와 통합되어서 더 안전하고 종량 과금제로 데스크톱 사용량만 지불하면 된다.

AWS에서 안전한 Window 데스크톱에 액세스하려면 WorkSpaces로 프로비저닝해서 클라우드 액세스 권한을 얻거나 VPC내에 있을 수도 있고 안전한 가상 데스크톱에서 기업 데이터 센터를 직접 액세스하는 것이다. 

 

#5 Amazon AppStream 2.0🎞️

데스크톱 애플리케이션 스트리밍 서비스로 인프라를 획득하거나 프로비저닝 하지 않고 모든 컴퓨터로 애플리케이션을 스트리밍 하는 것이다. 애플리케이션 자체는 웹 브라우저 내에서 액세스/전달된다. 

Workspaces VS AppStream 2.0 차이는?

Workspaces

데스크톱에서 애플리케이션을 원하는 만큼 실행할 수 있고 원격 데스크톱 애플리케이션으로 직접 연결해야 한다. 온디멘드 형식이나 늘 사용하게 된다. 

AppStream 2.0

- 특정 데스크톱 애플리케이션을 웹 브라우저에 스트리밍해서 클라우드에서 가상 테스크톱에 연결할 필요 X

- 웹 브라우저가 있는 모든 장치에서 실행되니 호환성도 높고 애플리케이션 당 인스턴스 유형 구성을 허용한다.

(예를 들어 포토샵에 CPU, RAM, GPU를 추가하는 것)

 

#6 AWS IoT Core - AWS 클라우드에 IoT 기기 연결 🚗

+) 사물인터넷(IoT) - 데이터를 수집하거나 전송할 수 있는 인터넷으로 연결된 기기의 네트워크. 커넥티드 카, 커넥티드 냉장고 등

IoT Core로 AWS 클라우드에 IoT 기기를 쉽게 연결할 수 있다. IoT Core로 이러한 기기는 수십 억 개의 기기/메세지를 안전하고 확장 가능한 방식으로 교환할 수 있고 IoT Core는 Pub & Sub의 역할을 해서 기기가 메세지를 교환하고 통신하도록 한다. 애플리케이션은 연결되어있지 않아도 기기와 통신할 수 있고 AWS 서비스와  IoT Core를 통합할 수 있다. 

(Lambda, S3, SageMaker 등과 백그라운드에서 통합해서 IoT 기기에 값을 추가할 수도 있음) 

 

#7 AWS AppSync - GraphQL를 사용해 웹/모바일 애플리케이션의 데이터를 저장

앱싱크는 모바일/웹 애플리케이션을 위한 백엔드를 구축하는 것으로 실시간으로 데이터를 저장하고 동기화한다. 이를 위해 앱싱크는 Facebook의 GraphQL이라는 기술을 활용한다. 

GraphQL덕분에 API의 클라이언트 코드가 자동으로 생성될 수 있다. 그리고 GraphQL 백엔드를 구축할 때, 앱싱크 덕분에 DynamoDB랑 Lambda와 통합할 수가 있다. 또한 실시간 구독을 통해서 웹/모바일 애플리케이션에 대해 실시간 데이터 업데이트를 할 수 있고 필요한 경우, 오프라인 데이터 동기화도 가능하다. 

+) AWS Amplify라는 프레임워크가 있어서 백그라운드에서 앱싱크를 활용할 수도 있다!  (Amplify를 사용해서 GraphQL 백엔드를 구축할 시에)

 

#8 AWS Amplify - 웹/모바일 애플리케이션의 백엔드를 구축 tools🛠️

규모 조정 가능한 풀스택 웹/모바일 애플리케이션을 개발하고 배포하는 것을 돕는 도구(서비스의 모음)이다.

AWS Amplify를 통해서 웹/모바일 애플리케이션을 만들기 위하여 관리해야 할 모든 상황을 한 눈에 볼 수 있다.

=> 쉽게 말해 웹/모바일 애플리케이션을 위한 Elastic Beanstalk이라고 보면 된다!

이런 식으로 Amplify의 Amplify Studio로 들어가면 그 내부에서 필요한 모든 것을 설정(데이터, 인증 , 저장, 함수, GraphQL, API 등)할 수 있는데 설정하고 나면, Amplify는 보이지 않는 곳에서 Amplify 백엔드를 설정하여 AWS의 기존 서비스들을 활용할 것이다.

=> AWS Amplify는 이렇게 많은 서비스들을 하나로 잘 포장한다. AWS Amplify의 목적이 웹/모바일 애플리케이션의 백엔드를 구축하는 것을 돕기 위해 생긴 서비스이다.

 

#9 AWS Device Farm - AWS 클라우드의 기기 농장🧑‍🌾(버그 테스트용)

웹/모바일 애플리케이션을 실제 데스크톱 브라우저와 실제 기기와 태블릿이랑 비교해서 테스트하는 완전 관리형 서비스이다. 또한 여러 가지 기기에서 이러한 테스트를 진행해서 전체 테스트의 실행 속도를 높일 수 있다. 무엇보다 GPS나 언어 설정, WiFi와 블루투스 등을 원하는 대로 설정할 수 있다. 

=> 모든 다른 수천 개의 기기에서 제대로 작동하는지(화면 비율에 따라 화면이 다 잘 보이는지, 각 기기마다 성능은 어떻게 나오는지..)테스트하면서 미리 버그도 찾아낼 수도 있는 좋은 서비스이다. 

=>  실제로 실험하면 Device Farm쪽에서 보고서랑 로그, 스크린샷을 다 보내준다.