Contents

26. AWS Identity and Access Management - Advanced

AWS Certified SAA-C02 ์‹œํ—˜์ค€๋น„

STS - Security Token Service

  • AWS ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ œํ•œ์ ์ด๊ณ  ์ผ์‹œ์ ์ธ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํ—ˆ์šฉ
  • ํ† ํฐ์€ 1 ์‹œ๊ฐ„๊นŒ์ง€ ์œ ํšจ (์ƒˆ๋กœ๊ณ ์นจ ํ•„์š”)

STS API

STS API ์„ค๋ช…
AssumeRole - ๊ฐœ์ธ ๊ณ„์ • ๋‚ด์—์„œ: ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
- ๊ณ„์ • ๊ฐ„ : ๋Œ€์ƒ ๊ณ„์ •์— ์—ญํ• ์„ ์ˆ˜์ž„ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰
AssumeRoleWithSAML - SAML์œผ๋กœ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ์ž๊ฒฉ์ฆ๋ช…์„ ๋ฐ˜ํ™˜
AssumeRoleWithWebIdentity - IdP(Identity Provider - Facebook Login, Google Login, OIDC Compatible…) ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ์ž๊ฒฉ์ฆ๋ช…์„ ๋ฐ˜ํ™˜
- ์ด๊ฒƒ๋ณด๋‹ค๋Š” AWS Cognito ์ถ”์ฒœํ•จ
GetSessionToken - AWS ๋ฃจํŠธ ๊ณ„์ • ๋˜๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ MFA ์ธ์ฆ

STS๋ฅผ ํ†ตํ•ด ์—ญํ• ์„ ์ˆ˜์ž„๋ฐ›๊ธฐ

  1. IAM ๊ณ„์ • ๋‚ด ํ˜น์€ ๊ณ„์ • ๊ฐ„ IAM ์—ญํ• (Role)์„ ์ •์˜ํ•œ๋‹ค.
  2. ์‚ฌ์šฉ์ž, ์—ญํ•  ๋“ฑ์ด ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” IAM Role ์›์น™(Principal)์„ ์ •์˜ํ•œ๋‹ค.
  3. AWS STS(Security Token Service) ์‚ฌ์šฉํ•˜์—ฌ IAM ์—ญํ• ์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ์ž๊ฒฉ์ฆ๋ช…์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. (AssumeRole API)

๊ทธ๋ฆผ ์ž„์‹œ์ž๊ฒฉ์ฆ๋ช… ์ •๋ณด๋Š” 15๋ถ„ ~ 1์‹œ๊ฐ„์‚ฌ์ด์˜ ์œ ํšจ์‹œ๊ฐ„์„ ๊ฐ–๋Š”๋‹ค.

๊ณ„์ • ๊ฐ„ STS

/posts/images/aws/cross-account-access-with-sts.png
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html
  1. ํ”„๋กœ๋•์…˜ ๊ณ„์ •์˜ ๊ด€๋ฆฌ์ž๋Š” ๊ฐœ๋ฐœ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž๋“ค์ด productionapp ๋ฒ„์ผ“์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ IAM ์—ญํ• ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” UpdateApp์„ ์ƒ์„ฑ
  2. ๊ฐœ๋ฐœ๊ณ„์ •์˜ ๊ด€๋ฆฌ์ž๋Š” Developer ๊ทธ๋ฃน์˜ ๋ฉค๋ฒ„๋“ค์„ UpdateApp ์—ญํ• ์˜ STS AssumeRole API๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌ
  3. ๊ฐœ๋ฐœ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž๋Š” ์—ญํ•  ์ „ํ™˜์„ ์š”์ฒญ
  4. AWS STS๋Š” ์—ญํ•  ์ž„์‹œ์ž๊ฒฉ์ฆ๋ช…์„ ๋ฐ˜ํ™˜
  5. ์ž„์‹œ ์ž๊ฒฉ ์ฆ๋ช…์€ AWS ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉ

Identity Federation in AWS

  • Federation์„ ํ†ตํ•ด AWS ์™ธ๋ถ€์˜ ์‚ฌ์šฉ์ž๊ฐ€ AWS ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ์ž„์‹œ ์—ญํ• ์„ ์ˆ˜ํ–‰

Federations์˜ ์ข…๋ฅ˜

  • SAML 2.0

  • Custom Identity Broker

  • Web Identity Federation with Amazon Cognito

  • Web Identity Federation without Amazon Cognito

  • Single Sign On

  • Non-SAML with AWS Microsoft AD

    federation์„ ์‚ฌ์šฉํ•˜๋ฉด IAM ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•  ํ•„์š” ์—†๋‹ค. (์‚ฌ์šฉ์ž ๊ด€๋ฆฌ๋Š” AWS ์™ธ๋ถ€์— ์žˆ๋‹ค.) ๊ทธ๋ฆผ

SAML 2.0 Federation

  • Active Directory
  • ADFS(Active Directory Federation Service)
  • AWS ์ฝ˜์†” ๋˜๋Š” CLI๋กœ ์•ก์„ธ์Šค ์ œ๊ณต (์ž„์‹œ ๋ณด์•ˆ ์ธ์ฆ ์ด์šฉ)
  • ์ง์›๋ณ„๋กœ IAM ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•  ํ•„์š” ์—†๋‹ค.
  • AWS IAM๊ณผ SAML ์‚ฌ์ด์— ์‹ ๋ขฐ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.
  • SAML 2.0์„ ํ†ตํ•ด ์›น ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ๋„๋ฉ”์ธ์„ ์ง€์›ํ•œ๋‹ค(SSO)
  • STS API : AssumeRoleWithSAML
  • SAML์„ ํ†ตํ•œ federation ๋ฐฉ์‹์€ ์˜ค๋ž˜๋œ ๋ฐฉ์‹์ด๋‹ค. -> Amazon Single Sign On(SSO) ์„ ํ†ตํ•œ federation์€ ์‹ฌํ”Œํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฐฉ์‹
Using SAML-based federation for API access to AWS
/posts/images/aws/saml-based-federation.diagram.png
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html
  1. ์กฐ์ง์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์•ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ง์˜ IdP์—์„œ ์ธ์ฆ์„ ์š”์ฒญ
  2. IdP๋Š” ์กฐ์ง์˜ ID ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ
  3. IdP๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋กœ SAML assertion ๊ตฌ์„ฑ -> ํด๋ผ์ด์–ธํŠธ ์•ฑ์œผ๋กœ ์ „์†ก
  4. ํด๋ผ์ด์–ธํŠธ ์•ฑ์€ AWS STS AssumeRoleWithSAML API ํ˜ธ์ถœ SAML ๊ณต๊ธ‰์ž ARN, ์ˆ˜์ž„ํ•  ์—ญํ• ์˜ ARN ๋ฐ IdP์˜ SAML assertion ์ „๋‹ฌ
  5. ํด๋ผ์ด์–ธํŠธ ์•ฑ์— ๋Œ€ํ•œ API ์‘๋‹ต์— ์ž„์‹œ ์ž๊ฒฉ ์ฆ๋ช… ํฌํ•จ
  6. ํด๋ผ์ด์–ธํŠธ ์•ฑ์€ ์ž„์‹œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ Amazon S3 API ํ˜ธ์ถœ
AWS Management Console์„ ์‚ฌ์šฉํ•˜์—ฌ SAML 2.0 federation ํ™œ์„ฑํ™”

SAML 2.0 Assertion๋Š” ์ž๊ฒฉ์ฆ๋ช…๊ณผ ํ˜ธํ™˜๋˜๋ฉฐ STS ๋ฆฌ์†Œ์Šค๋‚˜ ์ฝ˜์†”์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

/posts/images/aws/saml-based-sso-to-console.diagram.png
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html
Active Directory FS
  • ADFS๊ฐ€ SAML 2.0๊ณผ ํ˜ธํ™˜๋œ๋‹ค๋ฉด ๊ณผ์ •์€ ๋™์ผํ•˜๋‹ค.
/posts/images/aws/federated_auth_with_adfs.png
https://aws.amazon.com/ko/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/
  1. ๋ธŒ๋ผ์šฐ์ € ์ธํ„ฐํŽ˜์ด์Šค๋กœ ADFS ๋กœ๊ทธ์ธ
  2. ADFS๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๋Œ€๋กœ ์ธ์ฆ๋˜์—ˆ๋Š”์ง€ Identity Store๋ฅผ ํ†ตํ•ด ํ™•์ธ
  3. ADFS๋Š” SAML Assertion์„ ๋ฐ˜ํ™˜
  4. SAML Assertion์„ AWS STS ํ†ตํ•ด ์—ญํ• ๊ณผ ๊ตํ™˜ (Sign-in)
  5. ์ž„์‹œ ์ž๊ฒฉ ์ฆ๋ช…์€ STS AssumeRoleWithSAML์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜ํ™˜
  6. ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ๋˜๊ณ  AWS ๊ด€๋ฆฌ ์ฝ˜์†”์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์ œ๊ณต

Custom Identity Broker Application

  • IdP๊ฐ€ SAML 2.0๊ณผ ํ˜ธํ™”๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
  • identity ๋ธŒ๋กœ์ปค๊ฐ€ ์ ์ ˆํ•œ IAM ์ •์ฑ…์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • ์‚ฌ์šฉ STS API : AssumeRole or GetFederationToken
/posts/images/aws/enterprise-authentication-with-identity-broker-application.diagram.png
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html
  • ์ž๊ฒฉ ์ฆ๋ช… ๋ธŒ๋กœ์ปค๋Š” IAM STS API AssumeRole๊ณผ GetFederationToken API๋ฅผ ์ด์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ AWS ์ฝ˜์†”๊ณผ API ๋“ฑ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

Web Identity Federation - AssumeRoleWithWebIdentity

  • Client-Side์—์„œ AWS์— ์•ก์„ธ์Šค ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” -> AWS Cognito๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

AWS Cognito

  • ๋ชฉ์  : Client Side(๋ชจ๋ฐ”์ผ, ์›น)์—์„œ AWS ๋ฆฌ์†Œ์Šค๋ฅผ ์ง์ ‘ ์•ก์„ธ์Šค ์ œ๊ณต
  • ์‚ฌ์šฉ์˜ˆ์‹œ : ํŽ˜์ด์Šค๋ถ ๋กœ๊ทธ์ธํ•˜์—ฌ S3 ์“ฐ๊ธฐ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
  • ๋ฌธ์ œ : ๊ทธ๋•Œ๋งˆ๋‹ค IAM ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ์–ด๋–ป๊ฒŒ
    • federated IdP๋กœ ๋กœ๊ทธ์ธ ๋˜๋Š” ์ต๋ช… ์•„์ด๋””
    • Federated Identity Pool๋กœ๋ถ€ํ„ฐ AWS ์ž„์‹œ ์ž๊ฒฉ์ฆ๋ช…์„ ์–ป๋Š”๋‹ค.
    • ์ด๋Ÿฌํ•œ ์ž๊ฒฉ์ฆ๋ช…์€ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๋ช…์‹œํ•˜๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ IAM ์ •์ฑ…๊ณผ ํ•จ๊ป˜ ์ œ๊ณต

Microsoft Active Directory (AD)

  • Found on any Windows Server with AD Domain Services
  • Database of objects: User Accounts, Computers, Printers, File Shares, Security Groups
  • ์ค‘์•™ ์ง‘์ค‘์‹ ๋ณด์•ˆ ๊ด€๋ฆฌ, ๊ณ„์ • ์ƒ์„ฑ, ๊ถŒํ•œ ํ• ๋‹น
  • Objects๋Š” trees๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • trees์˜ ๊ทธ๋ฃน์€ forest๋ผ๊ณ  ํ•œ๋‹ค.

AWS Directory Services

AWS Directory Services
AWS Managed Microsoft AD - AWS์—์„œ ์ž์‹ ๋งŒ์˜ AD๋ฅผ ๋งŒ๋“ค๊ณ  ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๊ด€๋ฆฌ
- MFA ์ง€์›
- Establish โ€œtrustโ€ connections with your on-premises AD
AD Connector - on-premises AD๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ Directory Gateway(proxy)
- MFA ์ง€์›
- ์‚ฌ์šฉ์ž๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค AD์—์„œ ๊ด€๋ฆฌ
Simple AD - AD ํ˜ธํ™˜ ๊ด€๋ฆฌ ๋””๋ ‰ํ† ๋ฆฌ
- on-premises AD์™€ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์—†๋‹ค.

AWS Organizations

  • ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค
  • ์—ฌ๋Ÿฌ AWS ๊ณ„์ • ๊ด€๋ฆฌ
  • ๊ธฐ๋ณธ ๊ณ„์ •์ด ๋งˆ์Šคํ„ฐ ๊ณ„์ •์ด๋ฏ€๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. (๊ธฐํƒ€ ๊ณ„์ •์€ ํšŒ์› ๊ณ„์ •)
  • ํšŒ์› ๊ณ„์ •์€ ํ•œ ์กฐ์ง์˜ ์ผ๋ถ€๋งŒ ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋“  ๊ณ„์ •์œ ํ†ตํ•ฉ ์ฒญ๊ตฌ - ๋‹จ์ผ ์ง€๋ถˆ ๋ฐฉ๋ฒ•
  • EC2, S3 ํ• ์ธ ๋“ฑ ๊ฐ€๊ฒฉ ์ฑ…์ • ์ด์ 
  • API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AWS ๊ณ„์ • ์ƒ์„ฑ ์ž๋™ํ™”

๋‹ค์ค‘ ๊ณ„์ • ์ „๋žต

  • ๋ถ€์„œ๋ณ„ ๋น„์šฉ ์„ผํ„ฐ๋ณ„, dev/test/prod ๋“ฑ ๊ทœ์ œ ์ œํ•œ ์‚ฌํ•ญ(SCP ์ด์šฉ) ๋˜๋Š” ๋ฆฌ์†Œ์Šค ๊ฒฉ๋ผ ์ˆ˜์ค€์— ๋”ฐ๋ผ ๊ณ„์ •์„ ์ƒ์„ฑํ•œ๋‹ค.
  • ๊ณ„์ •๋‹น ์„œ๋น„์Šค ์ œํ•œ์ด ๋ณ„๋„๋กœ ์žˆ๊ณ , ๋กœ๊น…์„ ์œ„ํ•ด ๊ฒฉ๋ฆฌํ•œ๋‹ค.

Organizational Units (OU)

Service Control Policies (SCP)

  • IAM ์—ญํ• ์— Whitelist ๋˜๋Š” Blacklist
  • OU ๋˜๋Š” Account ๋ ˆ๋ฒจ์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅ
  • ๋งˆ์Šคํ„ฐ ๊ณ„์ •์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Œ
  • SCP๋Š” ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž์™€ Role์— ์ ์šฉ๋œ๋‹ค.
  • SCP๋Š” Service-linked ์—ญํ• ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
    • Service-linked ์—ญํ• ์€ ๋‹ค๋ฅธ AWS ์„œ๋น„์Šค๋ฅผ AWS ์กฐ์ง๊ณผ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก SCP์— ์˜ํ•ด ์ œํ•œ๋  ์ˆ˜ ์—†๋‹ค.
  • SCP์—๋Š” ๋ช…์‹œ์ ์œผ๋กœ Allow (ํ—ˆ์šฉ)์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. (๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ฌด๊ฒƒ๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ)
  • ์‚ฌ์šฉ ์‚ฌ๋ก€
    • ํŠน์ • ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œํ•œ
    • ์„œ๋น„์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜์—ฌ PCI ๊ทœ์ • ์ค€์ˆ˜ ์ ์šฉ

SCP Hierarchy

Blacklist & Whitelist ์ „๋žต
ํŠน์ • ์œ ํ˜•์˜ ์„œ๋น„์Šค๋ฅผ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋กœ ๋“ฑ๋ก
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowsAllActions",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    },
    {
      "Sid": "DenyDynamoDB",
      "Effect": "Deny",
      "Action": "dynamodb:*",
      "Resource": "*"
    }

  ]
}
ํŠน์ • ์œ ํ˜•์˜ ์„œ๋น„์Šค๋งŒ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "cloudwatch:*",
      ],
    }
  ]
}

์กฐ์ง ์ด๋™

๊ณ„์ • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  1. ์ด์ „ ์กฐ์ง์—์„œ ๊ตฌ์„ฑ์› ๊ณ„์ • ์ œ๊ฑฐ
  2. ์ƒˆ ์กฐ์ง์—์„œ ์ดˆ๋Œ€์ • ๋ณด๋‚ด๊ธฐ
  3. ํšŒ์› ๊ณ„์ •์—์„œ ์ƒˆ ์กฐ์ง์— ๋Œ€ํ•œ ์ดˆ๋Œ€ ์ˆ˜๋ฝ

๋งˆ์Šคํ„ฐ ๊ณ„์ •์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  1. ์กฐ์ง์—์„œ ๊ตฌ์„ฑ์› ๊ณ„์ • ์ œ๊ฑฐ
  2. ์ด์ „ ์กฐ์ง ์‚ญ์ œ
  3. ์œ„์˜ ๊ณผ์ • ๋ฐ˜๋ณต ์ด์ „ ๋งˆ์Šคํ„ฐ ๊ณ„์ •์„ ์ƒˆ ์กฐ์ง์œผ๋กœ ์ดˆ๋Œ€

IAM Conditions

aws:SourceIP:
  • API ํ˜ธ์ถœํ•˜๋Š” ๊ณณ์œผ๋กœ๋ถ€ํ„ฐ ํด๋ผ์ด์–ธํŠธ IP๋ฅผ ์ œํ•œ
  • ์•„๋ž˜ ์˜ˆ์‹œ๋Š” ํ•ด๋‹น ์•„์ดํ”ผ ๋ฒ”์œ„๊ฐ€ ์•„๋‹Œ ๊ณณ์—์„œ๋Š” ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ (NotIpAddress)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "NotIpAddress": {
            "aws:SourceIp" [
                "192.0.2.0/24"
                "203.0.113.0/24"
            ]
        },
//...
aws:RequestedRegion:
  • API ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฆฌ์ ผ์„ ์ œํ•œ
  • ์š”์ฒญ๋ฆฌ์ „์ด eu-central-1, eu-west-1 ๋‹ค๋ฅธ ๋ฆฌ์ „์—์„œ ์˜จ ๊ฒƒ์€ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์Œ.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowOnlyInsideEU",
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "rds:*",
        "dynamodb:*",
      ],
      "Resource": "*",
      "Condition": {
        "SingleEquals": {
            "aws:RequestedRegion" [
                "eu-central-1",
                "eu-west-1"
            ]
        },
//...
Restrict based on tags
  • ํƒœ๊ทธ๊ฐ€ DataAnalytics์ด๋ฉด์„œ ๋ถ€์„œ๊ฐ€ Data์ผ ๋•Œ๋งŒ ec2์˜ ํ•ด๋‹น ์ž‘์—…์ด ํ—ˆ์šฉ
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "StartStopIfTags",
      "Effect": "Allow",
      "Action": [
            "ec2:StartInstances",
            "ec2:StopInstances",
            "ec2:DescribeTags"
        ],
      "Resource": "arn:aws:ec2:regin:account-id:instance/*",
      "Condition": {
        "StringEquals": {
            "ec2:ResourceTag/Project" : "DataAnalytics",
            "aws:PrincipalTag/Department": "Data"
        }
      }
    }
  ]
}
๋‹ค์š”์†Œ ์ธ์ฆ ๊ฐ•์ œ
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAllActionsForEC2",
      "Effect": "Allow",
      "Action": "ec2:*"
      "Resource": "*"
    }
    {
      "Sid": "DenyStopAndTerminateWhenMFAIsNotPresent",
      "Effect": "Deny",
      "Action": [
        "ec2:StopInstances",
        "ec2:TerminateInstances"
      ],
      "Resource": "*",
      "Condition" : {
        "BoolIfExists" : {
            "aws:MultiFactorAuthPresent" : false
        }
      }
    }
  ]
}

IAM for S3

IAM for S3
  • ListBucket : Bucket ๋ ˆ๋ฒจ์˜ permission
    • "arn:aws:s3:::test"
  • GetObject, PutObject, DeleteObject : Object ๋ ˆ๋ฒจ์˜ permission
    • arn:aws:s3:::test/*
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{    
  "Version": "2012-10-17",
  "Statement": [
    {
        "Effect": "Allow",
        "Action": ["s3:ListBucket"],
        "Resource": ["arn:aws:s3:::test"],
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": ["arn:aws:s3:::test/*"],
    }
  ]
}

IAM Role๊ณผ ๋ฆฌ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์ •์ฑ…

๊ณ„์ • A์—์„œ ๊ณ„์ • B์— ์กด์žฌํ•˜๋Š” S3 ๋ฒ„ํ‚ท์„ ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋Š” ๋Œ€์‹  ๋ฆฌ์†Œ์Šค ๊ธฐ๋ฐ˜ ์ •์ฑ…์œผ๋กœ ์—ฐ๊ฒฐํ–ˆ์„ ๋•Œ

  • ์—ญํ• ์„ ์ˆ˜์ž„๋ฐ›์„ ๋•Œ ๊ณ„์ • A์˜ ์›๋ž˜ ๊ถŒํ•œ์„ ํฌ๊ธฐํ•˜๊ณ  Role์— ํ• ๋‹น๋œ ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
  • ๋ฆฌ์†Œ์Šค ๊ธฐ๋ฐ˜ ์ •์ฑ…์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์ฒด๊ฐ€ ๊ถŒํ•œ์„ ํฌ๊ธฐํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
    • example: ๊ณ„์ • A๋Š” DynamoDB ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•˜์—ฌ B๊ณ„์ •์˜ S3 ๋คํ”„
  • Supported by: Amazon S3 buckets, SNS topics, SQS queues, etc…

IAM Permission Boundaries

  • IAM permission boundaries๋Š” ์‚ฌ์šฉ์ž์™€ ์—ญํ• ์— ๋Œ€ํ•ด ์ง€์› (๊ทธ๋ฃน์€ ์ง€์›ํ•˜์ง€ ์•Š์Œ)
  • ๊ด€๋ฆฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ IAM ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋Š” ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์ด๋‹ค.
/posts/images/aws/EffectivePermissions-rbp-boundary-id.png
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/access_policies_boundaries.html

Permission Boundaries ์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๊ถŒํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋น„๊ด€๋ฆฌ์ž์—๊ฒŒ ์ฑ…์ž„ ์œ„์ž„
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์˜ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๊ณ  ์ž์ฒด ์ •์ฑ… ๋ฐ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ
  • ์กฐ์ง ๋ฐ SCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒด ๊ณ„์ • ๋Œ€์‹  ํŠน์ • ์‚ฌ์šฉ์ž ํ•œ๋ช…์„ ์ œํ•œํ•  ๋•Œ ์œ ์šฉ

IAM Policy Evaluation Logic

/posts/images/aws/PolicyEvaluationHorizontal111621.png
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html

AWS Resource Access Manager (RAM)

  • ์†Œ์œ ํ•œ AWS ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค๋ฅธ AWS ๊ณ„์ •๊ณผ ๊ณต์œ 
  • ๋ชจ๋“  ๊ณ„์ • ๋˜๋Š” ์กฐ์ง ๋‚ด์—์„œ ๊ณต์œ 
  • ๋ฆฌ์†Œ์Šค ์ค‘๋ณต ๋ฐฉ์ง€
  • VPC ์„œ๋ธŒ๋„ท
    • ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์—์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ
    • ๋™์ผํ•œ AWS ์กฐ์ง ์‚ฌ์šฉ์ž์—ฌ์•ผ ํ•œ๋‹ค.
    • Security Group ๋ฐ ๊ธฐ๋ณธ VPC ๊ณต์œ  ํ•  ์ˆ˜ ์—†์Œ
    • ์ฐธ๊ฐ€์ž๋Š” ์ž์‹ ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
    • ์ฐธ๊ฐ€์ž๋Š” ๋‹ค๋ฅธ ์ฐธ๊ฐ€์ž ๋˜๋Š” ์†Œ์œ ์ž์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด๊ฑฐ๋‚˜ ์ˆ˜์ • ๋ฐ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Œ
  • AWS Transit Gateway
  • Route53 Resolver Rules
  • License Manager Configurations

Resource Access Manager - VPC ์˜ˆ์‹œ

/posts/images/aws/resource-access-manager-vpc-example.png
  • ๊ฐ๊ฐ์˜ ๊ณ„์ •
    • ์ž์ฒด ์ž์›์— ๋Œ€ํ•œ ์ฑ…์ž„์ด ์กด์žฌ
    • ๋‹ค๋ฅธ ๊ณ„์ •์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด๊ฑฐ๋‚˜ ์ˆ˜์ • ๋˜๋Š” ์‚ญ์ œ ๋ถˆ๊ฐ€
  • ๋„คํŠธ์›Œํฌ๋Š” ๊ณต์œ ๋œ๋‹ค.
    • VPC์— ๊ตฌํ˜„๋œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋Š” VPC์˜ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์™€ ํ†ต์‹  ๊ฐ€๋Šฅ
    • ๊ฐœ์ธ IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ณ„์ •์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‰ฝ๊ฒŒ ์•ก์„ธ์Šค
    • ์ตœ๋Œ€ ๋ณด์•ˆ์„ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ณ„์ •์˜ ๋ณด์•ˆ ๊ทธ๋ฃน ์ฐธ์กฐ

AWS Single Sign-On (SSO)

  • Singe sign-on์„ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ณ„์ • ๋ฐ 3rd-party ๋น„์ฆˆ๋‹ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•œ๋‹ค.
  • AWS ์กฐ์ง๊ณผ ํ†ตํ•ฉ
  • SAML 2.0 ๋งˆํฌ์—… ์ง€์›
  • on-premises๋กœ ํ†ตํ•ฉ๋œ Active Directory์™€ ํ†ตํ•ฉ
  • ์ค‘์•™ ์ง‘์ค‘์‹ ๊ด€๋ฆฌ
  • CloudTrail์„ ํ†ตํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ๊ฐ์‚ฌ