#AWS Certified Developer Associate
388. STS 개요
Security Token Service
STS 를 통해 최대 1시간까지 임시 보안 자격 증명을 얻어 AWS 리소스에 바로 액세스 할 수 있다
보안 인증은 15분에서 1시간까지 유효
간단한 STS API 정리
AssumeRole : 계정 또는 교차 계정 내 역할을 추정함 (가장 핵심적)
AssumeRoleWithSAML : 사용자가 SAML 로 로그인 한 경우 사용자에게 임시 보안 인증을 부여
AssumeRoleWithWebIdentity :
- 사용자가 신분 제공자로 로그인하면 역할을 반환함 (Facebook login, Google login, OIDC 등)
- 요즘은 사용하지 않고 Cognito 자격 증명 풀을 대신 사용한다고 함
GetSessionToken : 사용자 또는 AWS 루트 계정에 MFA 가 있는 경우
GetFederationToken : 연합된 사용자의 임시 자격 증명
GetCallerIdentity : api 호출에 사용되는 iam 사용자 또는 역할의 세부사항을 반환함
DecodeAuthorizationMessage : AWS API 가 거부되었을때 오류 메세지를 디코딩함
STS with MFA
GetSessionToken API 를 사용해 STS 에서 세션 토큰을 얻는 것
- returns : 액세스id, 비밀 key, 포함해야 하는 세션 토큰, 보안 인증 만료일
적합한 IAM 조건의 IAM 정책이 필요함
IAM 역할에서 aws:MultiFactorAuthPresent:true 를 추가
389. 고급 IAM
Advanced IAM - Authorization Model Evalution of Policies, simplified
인증 모델과 정책을 평가하는 방법
1. 정책을 명시적으로 거부하면 거부로 결정
2. 허용이면 허용으로 결정
3. 아니면 모두 거부
명시적 거부 조건을 먼저 평가하기때문에 코드에 명시적 조건이 허용과 거부가 모두 존재하면 거부함
IAM Policies & S3 Bucket Policies
IAM 정책은 사용자, 역할, 그룹에 연결되어있음
S3 bucket 정책은 버킷에 연결되어있음
두가지 모두 버킷에서 사용자가 할 수 있는 것을 정의함
만약 s3 에서 작업할때
IAM 정책과 통합된 S3 버킷 정책은 모든 규칙이 함께 추가됨
- 보안 측면에서 평가될 전체 정책을 제공함
Example 1
EC2 인스턴스에 연결된 IAM 역할이 있고, 버킷에 읽기와 쓰기 권한을 부여하고 있음
s3 에 연결된 정책은 없음
이 경우 EC2 인스턴스에서 S3 버킷에 쓰기나 읽기가 가능한가?
- 가능함
- 두가지 정책의 통합으로 ec2 가 버킷에서 읽고 쓸 수 있는 권한을 가짐
Example 2
ec2 인스턴스에 연결된 iam 역할이 있고, 버킷에 읽기, 쓰기 권한을 부여하고 있음
s3 버킷 정책이 s3 버킷에 연결되어있고, ec2 인스턴스가 사용하는 iam 역할의 명시적 거부(explicit deny) 가 설정되어있음
이 경우 ec2 인스턴스에서 s3 버킷에 쓰기나 읽기가 가능한가?
- 불가능함
- 통합 정책에 명시적 거부가 있고, 명시적 거부가 명시적 허용보다 우선 순위가 높기 때문
Example 3
ec2 인스턴스에 연결된 iam 역할이 있고, s3 버킷과 관련된 정책은 없음
s3 버킷 정책은 s3 버킷과 연결되어있고, ec2 인스턴스에서 사용하는 iam 역할에 명시적인 읽기, 쓰기 허용이 있음
이 경우 ec2 인스턴스에서 s3 버킷에 쓰기나 읽기가 가능한가?
- 가능함
- 두가지 정책의 통합으로 ec2 가 버킷에서 읽고 쓸 수 있는 권한을 가짐
Example 4
ec2 인스턴스에 연결된 iam 역할이 있고, s3 버킷 권한에 대한 명시적 거부가 포함됨
s3 버킷 정책은 s3 버킷과 연결되어있고, ec2 인스턴스에서 사용하는 iam 역할에 명시적인 읽기, 쓰기 허용이 있음
이 경우 ec2 인스턴스에서 s3 버킷에 쓰기나 읽기가 가능한가?
- 불가능함
- 통합 정책에 명시적 거부가 있고, 명시적 거부가 명시적 허용보다 우선 순위가 높기 때문
Dynamic Policies with IAM
동적 정책 - 만약 iam 조직에서 각 사용자가 고유 폴더를 가지고 이 폴더에 읽기/쓰기만 가능하게할때
option 1 :
- user a 가 /home/a 에 액세스 하도록 허용하는 iam 정책의 생성
- 각 사용자 마다 고유의 정책이 필요함
option 2 :
- iam 동적 정책 생성
- 특수 정책 변수(sepcial policy variable) - ex) ${aws:username}
Inline vs Managed Policies
인라인 정책과 관리형 정책의 차이점
AWS Managed Policy
- aws 로 관리, 제어할 것이 없음
- 파워 유저나 관리자를 정의하거나 작업 기능을 기반으로 할 때 유용함
- 새 서비스를 생성하거나 새 api 를 도입하면 aws 에서 업데이트 됨
- 관리자가 필요할 때 매우 유용함
Customer Mananged Policy (고객 관리형 정책)
- 사용자가 정책을 생성하고 더 세분화된 제어가 필요할 때 사용하는것이 모범 사례
- 재사용 가능, 버전 관리 가능, 롤백 가능
- 중앙에서 변경 관리가 가능함
Inline (인라인 정책)
- 정책과 법칙 간의 완전한 일대일 관계
- 버전 관리와 롤백 불가
- 쉽게 변경할 수 없음
- IAM 법칙을 삭제하면 정책도 삭제됨
- 최대 2KB 의 정책 부여 가능
390. 사용자에게 AWS 서비스에 역할을 전달할 수 있는 권한 부여
많은 AWS 서비스를 구성할 때 iam 역할을 부여했고, 역할 부여를 위해 iam 역할을 전달한 키워드를 제공했음
- 대부분 서비스를 처음 구성할 때 허용하는 사항
다른 AWS 서비스로 역할을 전달하려면 iam:PassRole 이라는 IAM 권한이 필요함
이는 종종 전달된 역할을 보기 위한 iam:GetRole 이라는 다른 권한과 함께 제공됨
역할은 신뢰를 기반으로 해서만 전달할 수 있음
여기서는 ec2 서비스만 해당 역할 수행을 허용하는 신뢰를 가지고 있음
391. AWS 디렉토리 서비스
Micro Active Directory(AD) 와 AWS Directory Service
AD
- AD 도메인 서비스를 사용하는 모든 Windows 서버에서 볼 수 있는 소프트웨어
- 객체 db , 객체로는 사용자 계정, 컴퓨터, 프린터, 파일 공유, 보안 그룹 등이 있음
- 온프레미스 ms 시스템 내의 모든 사용자 관리 사항을 관리해줌
- 중앙식 보안 관리 - 계정을 생성하거나 권한을 부여할 수 있음
- 모든 객체는 트리(tree) 로 만들어짐
- 트리가 모여 포레스트(forest) 가 됨
- 도메인 컨트롤러에서 생성된 계정은 네트워크 내 모든 window 머신에서 로그인 가능
AWS Directory Services
aws 에서 AD 를 생성할 수 있음
AWS Managed Microsoft AD :
- aws 에 액티브 디렉토리를 생성
- 로컬 환경에서 사용자를 관리하고 MFA 를 지원
- 독립형 AD 로 온프레미스 AD(사용자가 따로 있는) 와 신뢰 관계를 생성함
- 양방향 각각 DB 를 가짐
- 온프레미스 AD 와 AWS AD 사이에 사용자를 공유함
AD Connector :
- 온프레미스로 리디렉트하는 디렉토리 게이트웨이 프록시
- MFA 지원
- 온프레미스 AD 가 총괄하여 사용자를 관리함
- 쿼리 및 연결 요청을 온프레미스 AD 로 연결하고 프록시를 보냄
Simple AD :
- AD 와 호환 가능한 AWS의 관리형 디렉토리
- 온프레미스 AD 와 결합될 수 없음
- 온프레미스 AD 가 없지만 AWS Cloud 에 AD 가 필요할 때 사용됨
- AD 를 사용하면 window 를 실행하는 ec2 인스턴스를 생성할 수 있음
- 이 windows 인스턴스는 네트워크에서 도메인 컨트롤러와 결합되어 로그인 정보와 자격 증명을 모두 공유함
마지막 cognito 사용자 풀은 사용자를 서비스에 리디렉션하는 개념으로 디렉토리 서비스는 아니라고 함
'AWS > AWS Certified Developer Associate' 카테고리의 다른 글
[Udemy][day-64] Section30 : 기타 서비스 (0) | 2023.03.12 |
---|---|
[Udemy][day-62,63] Section29 : AWS 보안 및 암호화: KMS, 암호화 SDK, SSM 파라미터 스토어, IAM 및 STS (0) | 2023.03.11 |
[Udemy][day-60,61] Section27 : 기타 서버리스 : Step Functions 및 AppSync (0) | 2023.03.05 |
[Udemy][day-59,60] Section26 : Cognito (0) | 2023.03.02 |
[Udemy][day-59] Section25 : 클라우드 개발 키트 (Cloud Development Kit, CDK) (0) | 2023.03.02 |