BTP

Role Template vs Role Collection ์ฐจ์ด #shorts #SAP #BTP

โ–ถ YouTube์—์„œ ๋ณด๊ธฐ

๐Ÿ“– ์ด ๊ธ€์—์„œ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ

BTP ์ฝ•ํ•์„ ์—ด ๋•Œ๋งˆ๋‹ค Role, Role Collection, Role Template์ด ๋’ค์„ž์—ฌ ๋ณด์ธ๋‹ค๋ฉด, ์ด ๊ธ€ ํ•˜๋‚˜๋กœ ๊ถŒํ•œ ๊ตฌ์กฐ๋ฅผ ํ•œ๋ฒˆ์— ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ์˜ ๋ฌผ๋ฅ˜ ๊ธฐ์—… "ํ•œ๋น›๋กœ์ง€์Šค"๊ฐ€ ์„œ๋ธŒ๊ณ„์ • ๊ถŒํ•œ์„ ์„ธํŒ…ํ•˜๋Š” ๊ณผ์ •์„ ๋”ฐ๋ผ๊ฐ€๋ฉฐ, ์ฝ•ํ• ํด๋ฆญ์ด ์•„๋‹Œ ๊ตฌ์กฐ ์ดํ•ด๋ฅผ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  • Role Template โ†’ Role โ†’ Role Collection โ†’ ์‚ฌ์šฉ์ž๋กœ ์ด์–ด์ง€๋Š” 4๋‹จ๊ณ„ ์ฒด์ธ์„ ๊ทธ๋ฆผ ์—†์ด๋„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค
  • Global Account / Directory / Subaccount ๊ฐ ๋ ˆ๋ฒจ์—์„œ ์–ด๋–ค ๊ถŒํ•œ์ด ๊ด€๋ฆฌ๋˜๋Š”์ง€ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค
  • Trust Configuration(SAP ID Service vs Custom IdP)์˜ ์ฐจ์ด์™€ ๊ทธ๋ฃน ๋งคํ•‘์„ ์ดํ•ดํ•œ๋‹ค
  • btp CLI์™€ cf CLI๋กœ ๊ถŒํ•œ ํ• ๋‹น์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค

๐Ÿ“š ์‹œ์ž‘ ์ „์— ๊ฐ–์ถ”๋ฉด ์ข‹์€ ๋ฐฐ๊ฒฝ

BTP ํŠธ๋ผ์ด์–ผ ๋˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•ด ๋ณธ ๊ฒฝํ—˜, ๊ทธ๋ฆฌ๊ณ  ์ฝ•ํ•์—์„œ ์„œ๋ธŒ๊ณ„์ • ํ™”๋ฉด์„ ํ•œ ๋ฒˆ์ด๋ผ๋„ ์—ด์–ด๋ณธ ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. Cloud Foundry์— ์•ฑ์„ ๋ฐฐํฌํ•ด ๋ดค๋‹ค๋ฉด 3๋‹จ๊ณ„ ์˜ˆ์ œ๊ฐ€ ๋” ์™€๋‹ฟ๊ฒ ์ง€๋งŒ ํ•„์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ CLI ๋ช…๋ น์„ ์‹คํ–‰ํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๐Ÿ”ง ํ™˜๊ฒฝ๊ณผ ์ค€๋น„๋ฌผ

์ด ๊ธ€์˜ ์˜ˆ์‹œ๋Š” 2026๋…„ ๊ธฐ์ค€ SAP BTP ๋ฉ€ํ‹ฐ ํ™˜๊ฒฝ ์„œ๋ธŒ๊ณ„์ •(Cloud Foundry ๋Ÿฐํƒ€์ž„ ํฌํ•จ)์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ผ์ด์–ผ ๊ณ„์ •์—์„œ๋„ ๋Œ€๋ถ€๋ถ„ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Directory ๊ธฐ๋Šฅ๊ณผ Custom IdP ์—ฐ๋™์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ(์œ ๋ฃŒ) ๊ธ€๋กœ๋ฒŒ ๊ณ„์ •์—์„œ ์˜จ์ „ํžˆ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • SAP BTP ์ฝ•ํ• โ€” Subaccount์˜ Security ๋ฉ”๋‰ด ์ ‘๊ทผ ๊ถŒํ•œ ํ•„์š”
  • btp CLI 2.x โ€” btp login์œผ๋กœ ๊ธ€๋กœ๋ฒŒ ๊ณ„์ • ์ ‘์† ํ™•์ธ
  • cf CLI v8 โ€” Cloud Foundry org/space ๊ถŒํ•œ ์‹ค์Šต์šฉ
  • ์‹ค์Šต ๊ณ„์ •์—๋Š” Subaccount Administrator ๋กค ์ปฌ๋ ‰์…˜์ด ํ• ๋‹น๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

์‹œ๋‚˜๋ฆฌ์˜ค ์กฐ์ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐฝ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ฅ˜ ์Šคํƒ€ํŠธ์—… ํ•œ๋น›๋กœ์ง€์Šค๋Š” ๊ธ€๋กœ๋ฒŒ ๊ณ„์ • ์•„๋ž˜ hanbit-dev, hanbit-qa, hanbit-prod ์„ธ ์„œ๋ธŒ๊ณ„์ •์„ ์šด์˜ํ•˜๊ณ , ์šด์ž„ ์ •์‚ฐ ์•ฑ cargo-billing์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๊ถŒํ•œ ๊ตฌ์กฐ, ์ถœ์ž…์ฆ ๋น„์œ ๋กœ ํ•œ๋ฒˆ์—

BTP ๊ถŒํ•œ์ด ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ด์œ ๋Š” ์ด๋ฆ„์ด ๋น„์Šทํ•œ ๊ฐœ๋… ์„ธ ๊ฐ€์ง€๊ฐ€ ์ธต์ธต์ด ์Œ“์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํšŒ์‚ฌ ๊ฑด๋ฌผ ์ถœ์ž…์ฆ์— ๋น„์œ ํ•˜๋ฉด ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค.

  • Role Template(์—ญํ•  ํ…œํ”Œ๋ฆฟ) = ์ถœ์ž…์ฆ ์–‘์‹. ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ "์ด ์•ฑ์—๋Š” ์กฐํšŒ์ž, ๊ด€๋ฆฌ์ž๋ผ๋Š” ๊ถŒํ•œ ๋“ฑ๊ธ‰์ด ์กด์žฌํ•œ๋‹ค"๋ผ๊ณ  ์„ ์–ธํ•œ ์„ค๊ณ„๋„์ž…๋‹ˆ๋‹ค. ์•ฑ(์ •ํ™•ํžˆ๋Š” XSUAA ์•ฑ ์ธ์Šคํ„ด์Šค)์„ ์„œ๋ธŒ๊ณ„์ •์— ๋ฐฐํฌํ•˜๋ฉด ํ•จ๊ป˜ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
  • Role(์—ญํ• ) = ์–‘์‹์œผ๋กœ ์‹ค์ œ ๋ฐœ๊ธ‰ํ•œ ์ถœ์ž…์ฆ. ํ…œํ”Œ๋ฆฟ์— ์†์„ฑ ๊ฐ’(attribute)์„ ์ฑ„์›Œ ์„œ๋ธŒ๊ณ„์ •์— ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์ฒด์  ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์— ์†์„ฑ์ด ์—†์œผ๋ฉด ๋ฐฐํฌ ์‹œ ๋™์ผ ์ด๋ฆ„์˜ Role์ด ์ž๋™ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.
  • Role Collection(์—ญํ•  ์ปฌ๋ ‰์…˜) = ์ถœ์ž…์ฆ ์—ฌ๋Ÿฌ ์žฅ์„ ๋‹ด์€ ๋ชฉ๊ฑธ์ด ์นด๋“œํ™€๋”. ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๊ฐœ๋ณ„ Role์ด ์•„๋‹ˆ๋ผ ํ•ญ์ƒ Role Collection ๋‹จ์œ„๋กœ๋งŒ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

์ฆ‰ ์ฒด์ธ์€ ๋‹ค์Œ ํ•œ ์ค„์ž…๋‹ˆ๋‹ค.

Role Template(์•ฑ์ด ์„ ์–ธ) โ†’ Role(์„œ๋ธŒ๊ณ„์ •์— ์ƒ์„ฑ) โ†’ Role Collection(๋กค์„ ๋ฌถ์Œ) โ†’ ์‚ฌ์šฉ์ž ๋˜๋Š” IdP ๊ทธ๋ฃน(์ปฌ๋ ‰์…˜ ํ• ๋‹น)

๋ ˆ๋ฒจ ๊ด€์ ๋„ ์ •๋ฆฌํ•ด ๋ด…๋‹ˆ๋‹ค. Global Account์—์„œ๋Š” ๊ธ€๋กœ๋ฒŒ ๊ณ„์ • ๊ด€๋ฆฌ์ž ๊ถŒํ•œ๊ณผ Directory ๊ตฌ์„ฑ์„, Directory์—์„œ๋Š” ํ•˜์œ„ ์„œ๋ธŒ๊ณ„์ • ๋ฌถ์Œ์— ๋Œ€ํ•œ ๊ด€๋ฆฌ ๊ถŒํ•œ(๊ถŒํ•œ ๋ถ€์—ฌ ๊ธฐ๋Šฅ์„ ์ผ  Directory์— ํ•œํ•จ)์„, Subaccount์—์„œ๋Š” ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์˜ Role Collection๊ณผ Trust Configuration์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด ์ž๋™์œผ๋กœ ์•„๋ž˜๋กœ "์ƒ์†"๋œ๋‹ค๊ธฐ๋ณด๋‹ค, Directory ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ํ•˜์œ„ ์„œ๋ธŒ๊ณ„์ • ๊ด€๋ฆฌ ์ž‘์—…์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ์‹์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ์•ฑ ๊ถŒํ•œ(Role Collection)์€ ์–ด๋””๊นŒ์ง€๋‚˜ ๊ฐ ์„œ๋ธŒ๊ณ„์ • ์•ˆ์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. dev์—์„œ ๋งŒ๋“  ์ปฌ๋ ‰์…˜์ด prod์— ์ž๋™์œผ๋กœ ์ƒ๊ธฐ์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ์กฐ๊ฐ์€ Trust Configuration์ž…๋‹ˆ๋‹ค. ์„œ๋ธŒ๊ณ„์ •์€ "๋ˆ„๊ฐ€ ์‚ฌ์šฉ์ž์ธ์ง€"๋ฅผ ์‹ ๋ขฐํ•  IdP๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ SAP ID Service(๊ฐœ์ธ SAP ๊ณ„์ • ๊ธฐ๋ฐ˜)์ด๊ณ , ์‹ค๋ฌด์—์„œ๋Š” SAP Cloud Identity Services(IAS) ๊ฐ™์€ Custom IdP๋ฅผ ์—ฐ๊ฒฐํ•ด ํšŒ์‚ฌ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์‹œํ‚ค๋Š” ๋ฐฉ์‹์ด ๋„๋ฆฌ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. Custom IdP๋ฅผ ์“ฐ๋ฉด ์‚ฌ์šฉ์ž ๊ฐœ๊ฐœ์ธ์ด ์•„๋‹ˆ๋ผ IdP ๊ทธ๋ฃน์— Role Collection์„ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์–ด ์šด์˜ ๋ถ€๋‹ด์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๐Ÿ’ป ์‹ค์ „ ์˜ˆ์ œ: ํ•œ๋น›๋กœ์ง€์Šค ๊ถŒํ•œ ์„ธํŒ… 3๋‹จ๊ณ„

1๋‹จ๊ณ„ โ€” ๊ธฐ๋ณธ: Role Collection ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ํ• ๋‹นํ•˜๊ธฐ

cargo-billing ์•ฑ์˜ ๋ณด์•ˆ ์„ค์ •(xs-security.json)์—์„œ Role Template ๋‘ ๊ฐœ๋ฅผ ์„ ์–ธํ–ˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. ์ด ํŒŒ์ผ์ด ๋ฐฐํฌ๋˜๋ฉด ์„œ๋ธŒ๊ณ„์ •์— ํ…œํ”Œ๋ฆฟ๊ณผ ๋กค์ด ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

{
  "xsappname": "cargo-billing",
  "tenant-mode": "dedicated",
  "scopes": [
    { "name": "$XSAPPNAME.InvoiceRead",  "description": "์ •์‚ฐ ์กฐํšŒ" },
    { "name": "$XSAPPNAME.InvoiceWrite", "description": "์ •์‚ฐ ์Šน์ธ/์ˆ˜์ •" }
  ],
  "role-templates": [
    { "name": "BillingViewer",  "scope-references": ["$XSAPPNAME.InvoiceRead"] },
    { "name": "BillingManager", "scope-references": ["$XSAPPNAME.InvoiceRead", "$XSAPPNAME.InvoiceWrite"] }
  ]
}

์ด์ œ btp CLI๋กœ hanbit-dev ์„œ๋ธŒ๊ณ„์ •์— ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ค๊ณ  ๋กค์„ ๋‹ด์€ ๋’ค ์‚ฌ์šฉ์ž์—๊ฒŒ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

# ์„œ๋ธŒ๊ณ„์ • ํƒ€๊ฒŸ ์ง€์ •
btp target --subaccount <hanbit-dev-์„œ๋ธŒ๊ณ„์ •-ID>

# ๋กค ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
btp create security/role-collection "HB_Billing_Read" \
  --description "์šด์ž„ ์ •์‚ฐ ์กฐํšŒ ์ „์šฉ"

# ์ปฌ๋ ‰์…˜์— ๋กค ์ถ”๊ฐ€ (of-app ๊ฐ’์€ btp list security/app ์œผ๋กœ ํ™•์ธ)
btp add security/role --to-role-collection "HB_Billing_Read" \
  --name-of-role "BillingViewer" \
  --role-template "BillingViewer" \
  --of-app "cargo-billing!t2001"

# ์‚ฌ์šฉ์ž์—๊ฒŒ ์ปฌ๋ ‰์…˜ ํ• ๋‹น
btp assign security/role-collection "HB_Billing_Read" \
  --to-user minsu.park@hanbitlogis.example \
  --create-user-if-missing

์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•˜๋ฉด ํ† ํฐ์— InvoiceRead ์Šค์ฝ”ํ”„๊ฐ€ ํฌํ•จ๋˜๊ณ , ์•ฑ์€ ์ด ์Šค์ฝ”ํ”„๋กœ ์ ‘๊ทผ์„ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„ โ€” ์‹ค๋ฌด: Custom IdP ๊ทธ๋ฃน ๋งคํ•‘๊ณผ ์ ๊ฒ€ ๋ฃจํ‹ด

์‚ฌ์šฉ์ž๊ฐ€ 30๋ช…๋งŒ ๋˜์–ด๋„ ๊ฐœ๋ณ„ ํ• ๋‹น์€ ๊ด€๋ฆฌ ์žฌ์•™์ด ๋ฉ๋‹ˆ๋‹ค. ํ•œ๋น›๋กœ์ง€์Šค๋Š” IAS ํ…Œ๋„ŒํŠธ๋ฅผ Custom IdP๋กœ ์—ฐ๊ฒฐํ•˜๊ณ , ์žฌ๋ฌดํŒ€ ๊ทธ๋ฃน HB-FIN-TEAM์„ ์ปฌ๋ ‰์…˜์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ์ฝ•ํ•์—์„œ๋Š” Security โ†’ Trust Configuration์—์„œ IdP๋ฅผ ํ™•์ธํ•˜๊ณ , Role Collection ์ƒ์„ธ ํ™”๋ฉด์˜ ๊ทธ๋ฃน ๋งคํ•‘์œผ๋กœ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ CLI๊ฐ€ ์žฌํ˜„์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

# ์‹ ๋ขฐ ๊ตฌ์„ฑ ํ™•์ธ: origin key(์˜ˆ: hanbitias-platform)๋ฅผ ์—ฌ๊ธฐ์„œ ํ™•์ธ
btp list security/trust

# IdP ๊ทธ๋ฃน -> ๋กค ์ปฌ๋ ‰์…˜ ๋งคํ•‘
btp assign security/role-collection "HB_Billing_Read" \
  --to-group "HB-FIN-TEAM" \
  --of-idp "hanbitias-platform"

์ดํ›„ ์žฌ๋ฌดํŒ€ ์ž…ํ‡ด์‚ฌ์ž๋Š” IAS ๊ทธ๋ฃน์—์„œ๋งŒ ๊ด€๋ฆฌํ•˜๋ฉด BTP ๊ถŒํ•œ์ด ๋”ฐ๋ผ์˜ต๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ์„ค์ • ํ›„ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ฆ ๋ฃจํ‹ด์„ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

# ํŠน์ • ์‚ฌ์šฉ์ž์˜ ์‹ค์ œ ํ• ๋‹น ์ƒํƒœ ์กฐํšŒ (์›์ธ ์ถ”์ ์˜ ์‹œ์ž‘์ )
btp list security/user --of-idp "hanbitias-platform"
btp get security/user minsu.park@hanbitlogis.example --of-idp "hanbitias-platform"

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋„ ์งš์–ด ๋‘ก๋‹ˆ๋‹ค. ๊ทธ๋ฃน ๋งคํ•‘ ํ›„์—๋„ ๊ถŒํ•œ์ด ์—†๋‹ค๊ณ  ๋‚˜์˜ค๋ฉด ๋Œ€๋ถ€๋ถ„ (1) ์‚ฌ์šฉ์ž๊ฐ€ SAP ID Service ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ์ž˜๋ชป ๋“ค์–ด๊ฐ”๊ฑฐ๋‚˜(origin ๋ถˆ์ผ์น˜), (2) IdP ์–ด์„œ์…˜์— ๊ทธ๋ฃน ์†์„ฑ์ด Groups๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. IAS ์ชฝ ์–ด์„œ์…˜ ์†์„ฑ ๊ตฌ์„ฑ์—์„œ ๊ทธ๋ฃน ํด๋ ˆ์ž„ ์ด๋ฆ„์„ ํ™•์ธํ•˜์„ธ์š”.

3๋‹จ๊ณ„ โ€” ํ”„๋กœ๋•์…˜: ์ตœ์†Œ ๊ถŒํ•œ, ํ™˜๊ฒฝ ๋ถ„๋ฆฌ, CF ๊ถŒํ•œ๊นŒ์ง€

hanbit-prod์—์„œ๋Š” ๋ณด์•ˆ ์›์น™์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ฒซ์งธ, ์ตœ์†Œ ๊ถŒํ•œ: prod์—๋Š” HB_Billing_Admin ๊ฐ™์€ ์“ฐ๊ธฐ ๊ถŒํ•œ ์ปฌ๋ ‰์…˜์„ ์†Œ์ˆ˜ ์ธ์› ๊ทธ๋ฃน์—๋งŒ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ํ”Œ๋žซํผ ๊ถŒํ•œ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๊ถŒํ•œ ๋ถ„๋ฆฌ: ๊ฐœ๋ฐœ์ž๊ฐ€ ์•ฑ์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด BTP Role Collection์ด ์•„๋‹ˆ๋ผ Cloud Foundry์˜ org/space ๋กค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‘˜์€ ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ ๊ถŒํ•œ ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค.

# CF ๋ฐฐํฌ ๊ถŒํ•œ: BTP ๋กค ์ปฌ๋ ‰์…˜๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ณ„๋„๋กœ ๋ถ€์—ฌํ•ด์•ผ ํ•จ
cf api https://api.cf.ap12.hana.ondemand.com
cf login --sso

cf set-org-role   jiyoon.seo@hanbitlogis.example HANBIT-PROD OrgAuditor
cf set-space-role jiyoon.seo@hanbitlogis.example HANBIT-PROD billing SpaceDeveloper

์…‹์งธ, ๊ตฌ์„ฑ์˜ ์ฝ”๋“œํ™”: prod์˜ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑยท๋งคํ•‘์„ ์‚ฌ๋žŒ์ด ์ฝ•ํ•์—์„œ ํด๋ฆญํ•˜์ง€ ์•Š๊ณ  ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด dev/qa/prod ๊ฐ„ ๋ถˆ์ผ์น˜๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ํ™˜๊ฒฝ๋ณ„ ๋ฐ˜๋ณต ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์„ธํŒ… ์Šคํฌ๋ฆฝํŠธ์˜ ํ•ต์‹ฌ๋ถ€ (idempotent ํ•˜๊ฒŒ ์ž‘์„ฑ)
for SA in $HB_QA_ID $HB_PROD_ID; do
  btp target --subaccount $SA
  btp create security/role-collection "HB_Billing_Admin" \
    --description "์ •์‚ฐ ์Šน์ธ ๊ถŒํ•œ (์ œํ•œ ๊ทธ๋ฃน ์ „์šฉ)" || true
  btp assign security/role-collection "HB_Billing_Admin" \
    --to-group "HB-FIN-LEAD" --of-idp "hanbitias-platform"
done

๋„ท์งธ, ์ •๊ธฐ ๊ฐ์‚ฌ: ๋ถ„๊ธฐ๋งˆ๋‹ค btp list security/role-collection ๊ฒฐ๊ณผ์™€ ๊ทธ๋ฃน ๋งคํ•‘์„ ๋คํ”„ํ•ด ์ €์žฅ์†Œ์— ์ปค๋ฐ‹ํ•ด ๋‘๋ฉด ๊ถŒํ•œ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. prod ์„œ๋ธŒ๊ณ„์ •์˜ Subaccount Administrator๋Š” 2~3๋ช… ์ด๋‚ด๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

โš ๏ธ ํ—ท๊ฐˆ๋ฆฌ๋Š” ํฌ์ธํŠธ ์ •๋ฆฌ์™€ FAQ

  • Q1. Role Template๊ณผ Role Collection, ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฐ€์š”? ๋ฐฉํ–ฅ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Template์€ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ(xs-security.json)๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๊ณ , Collection์€ ์„œ๋ธŒ๊ณ„์ • ๊ด€๋ฆฌ์ž๊ฐ€ ์šด์˜ ๊ด€์ ์—์„œ ๋กค์„ ๋ฌถ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Template์€ ๋ฐฐํฌ ์‚ฐ์ถœ๋ฌผ, Collection์€ ์šด์˜ ์„ค์ •์ด๋ผ๊ณ  ๊ธฐ์–ตํ•˜๋ฉด ๋‹ค์‹œ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Q2. ์—ญํ• ์€ ์–ด๋А ๋ ˆ๋ฒจ์—์„œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‚˜์š”? ์•ฑ ๊ถŒํ•œ(Role/Role Collection)์€ ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ์•ฑ์ด ๋ฐฐํฌ๋œ ์„œ๋ธŒ๊ณ„์ •์—์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Global Account ๋ ˆ๋ฒจ์˜ ์ปฌ๋ ‰์…˜์€ ๊ธ€๋กœ๋ฒŒ ๊ณ„์ • ๊ด€๋ฆฌ ๊ถŒํ•œ์šฉ์ด๊ณ , Directory๋Š” ํ•˜์œ„ ์„œ๋ธŒ๊ณ„์ • ๊ด€๋ฆฌ ์œ„์ž„์šฉ์ž…๋‹ˆ๋‹ค. dev์—์„œ ์ž˜ ๋˜๋˜ ๊ถŒํ•œ์ด prod์—์„œ ์—†๋‹ค๋ฉด, prod ์„œ๋ธŒ๊ณ„์ •์— ์ปฌ๋ ‰์…˜์„ ๋‹ค์‹œ ๋งŒ๋“ค์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด ๊ฐ€์žฅ ํฝ๋‹ˆ๋‹ค.
  • Q3. Role Collection์„ ํ• ๋‹นํ–ˆ๋Š”๋ฐ CF์— ๋ฐฐํฌ๊ฐ€ ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ •์ƒ์ž…๋‹ˆ๋‹ค. CF org/space ๋กค(OrgManager, SpaceDeveloper ๋“ฑ)์€ BTP Role Collection๊ณผ ๋ณ„๋„ ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค. cf set-space-role๋กœ ๋”ฐ๋กœ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ SpaceDeveloper๋ผ๊ณ  ํ•ด์„œ ์•ฑ ํ™”๋ฉด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์ด๋Š” ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค.
  • Q4. ๊ถŒํ•œ์„ ์คฌ๋Š”๋ฐ๋„ 403์ด ๊ณ„์† ๋‚ฉ๋‹ˆ๋‹ค. ํ† ํฐ์€ ๋กœ๊ทธ์ธ ์‹œ์ ์— ๋ฐœ๊ธ‰๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์•„์›ƒ ํ›„ ์žฌ๋กœ๊ทธ์ธ(๋˜๋Š” ํ† ํฐ ๋งŒ๋ฃŒ ๋Œ€๊ธฐ)ํ•ด์•ผ ์ƒˆ ์Šค์ฝ”ํ”„๊ฐ€ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์•ˆ ๋˜๋ฉด ์‚ฌ์šฉ์ž์˜ origin(SAP ID Service vs Custom IdP)์ด ์ปฌ๋ ‰์…˜์„ ํ• ๋‹นํ•œ IdP์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ฐ™์€ ์ด๋ฉ”์ผ์ด๋ผ๋„ origin์ด ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

๐Ÿš€ ์ด์–ด์„œ ๋ณด๋ฉด ์ข‹์€ ์ฃผ์ œ

๊ถŒํ•œ ๊ตฌ์กฐ๊ฐ€ ์žกํ˜”๋‹ค๋ฉด ๋‹ค์Œ ์ˆœ์„œ๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์„ ๊ถŒํ•ฉ๋‹ˆ๋‹ค. (1) SAP Cloud Identity Services์˜ ์ธ์ฆ ์ •์ฑ…๊ณผ MFA ์ ์šฉ, (2) XSUAA ์†์„ฑ(attribute) ๊ธฐ๋ฐ˜ ์ธ์Šคํ„ด์Šค ๊ถŒํ•œ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ค€ ์ œ์–ด ๊ตฌํ˜„, (3) Terraform Provider for SAP BTP๋กœ ์„œ๋ธŒ๊ณ„์ •ยท์ปฌ๋ ‰์…˜ยท๋งคํ•‘ ์ „์ฒด๋ฅผ IaC๋กœ ๊ด€๋ฆฌ, (4) CAP/RAP ์•ฑ์—์„œ ์Šค์ฝ”ํ”„๋ฅผ ์„œ๋น„์Šค ์ฝ”๋“œ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•. ํŠนํžˆ Terraform ๋ฐฉ์‹์€ 3๋‹จ๊ณ„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋ฐœ์ „์‹œํ‚จ ํ˜•ํƒœ๋กœ, ํ™˜๊ฒฝ ๋ณต์ œ์™€ ๊ฐ์‚ฌ์— ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ—‚ ์ •๋ฆฌํ•˜๋ฉฐ

๊ฒฐ๊ตญ BTP ๊ถŒํ•œ ๊ด€๋ฆฌ์—์„œ ์‚ฌ๊ณ ๊ฐ€ ๋‚˜๋Š” ์ง€์ ์€ ๋Œ€๋ถ€๋ถ„ ๋‘ ๊ณณ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” Role Collection์„ ์„œ๋ธŒ๊ณ„์ •๋งˆ๋‹ค ๋‹ค์‹œ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์žŠ๋Š” ๊ฒƒ, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” BTP ๊ถŒํ•œ๊ณผ Cloud Foundry org/space ๊ถŒํ•œ์„ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ฐฉ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ๋น›๋กœ์ง€์Šค ์˜ˆ์ œ์ฒ˜๋Ÿผ Role Template์€ ์ฝ”๋“œ๋กœ, Role Collection๊ณผ ๊ทธ๋ฃน ๋งคํ•‘์€ ์„œ๋ธŒ๊ณ„์ •๋ณ„๋กœ ๋ช…์‹œ์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์›์น™๋งŒ ์ง€ํ‚ค๋ฉด ์ฝ•ํ• ํ™”๋ฉด์„ ์•„๋ฌด๋ฆฌ ์˜ฎ๊ฒจ ๋‹ค๋…€๋„ ํ—ท๊ฐˆ๋ฆด ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€ 0

์•„์ง ๋Œ“๊ธ€์ด ์—†์Šต๋‹ˆ๋‹ค.