Azure-sdk-for-java: [BUG] KeyVaultPropertySource 클래슀 / getPropertyNames λ©”μ„œλ“œλŠ” ν‚€ μ €μž₯μ†Œμ˜ λͺ¨λ“  λΉ„λ°€ (λΉ„λ°€ λΉ„ν™œμ„±ν™” 포함)μ„λ‘œλ“œν•©λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 08μ›” 13일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: Azure/azure-sdk-for-java

버그 μ„€λͺ…
ν˜„μž¬ Key VaultλŠ” 기본적으둜 μΌμ‹œ μ‚­μ œ κΈ°λŠ₯을 ν™œμ„±ν™”ν•©λ‹ˆλ‹€. μΈμ¦μ„œλ₯Ό 생성 / μ‚­μ œν•˜λ©΄ λΉ„ν™œμ„±ν™” 된 λΉ„λ°€μ„λ‘œλ“œν•˜κΈ° λ•Œλ¬Έμ— Jave 앱이 μΆ©λŒν•©λ‹ˆλ‹€.
KeyVaultPropertySource ν΄λž˜μŠ€λŠ” KeyVault의 λͺ¨λ“  λΉ„λ°€μ„λ‘œλ“œν•©λ‹ˆλ‹€. getPropertyNames λ©”μ„œλ“œμ—μ„œ λΉ„ν™œμ„±ν™” 된 λΉ„λ°€μ„λ‘œλ“œν•΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€.
그런데 ν•΄κ²° 방법은 μΈμ¦μ„œλ₯Ό μ œκ±°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ†Œν”„νŠΈ μ‚­μ œ 된 λΉ„λ°€μ„λ‘œλ“œν•˜λΌλŠ” μš”μ²­μ΄ μ—†κΈ° λ•Œλ¬Έμ— SDK λΆ€λΆ„μ—μ„œ κ°œμ„  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ™Έ λ˜λŠ” μŠ€νƒ 좔적
κ°€λŠ₯ν•œ 경우 μ˜ˆμ™Έ 둜그 및 μŠ€νƒ 좔적을 μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.

μž¬ν˜„ν•˜λ €λ©΄
λ™μž‘μ„ μž¬ν˜„ν•˜λŠ” 단계 :
A. KeyVault μΈμ¦μ„œ (λΉ„λ°€ μ•„λ‹˜)λ₯Ό μƒμ„±ν•˜κ³  Java μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 좩돌 ν•œ ν›„ μΈμ¦μ„œλ₯Ό μ‚­μ œν–ˆμŠ΅λ‹ˆλ‹€.
C. μΈμ¦μ„œλŠ” μƒˆ μΈμ¦μ„œλ₯Ό λ§Œλ“€ λ•Œ μžλ™μœΌλ‘œ λΉ„λ°€ μ‹λ³„μžλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
D. μΈμ¦μ„œλ₯Ό μ‚­μ œ ν•œ ν›„ Azure μ‹œμŠ€ν…œμ—μ„œ λΉ„λ°€ μ‹λ³„μžλ₯Ό λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.
E.이 경우 Java μ‘μš© ν”„λ‘œκ·Έλž¨μ€ λŸ°νƒ€μž„μ— DISABLED 비밀을 μ½μœΌλ €κ³ ν•©λ‹ˆλ‹€.
λ‚˜λŠ”. 그리고 μžλ°” 앱이 μΆ©λŒν–ˆμŠ΅λ‹ˆλ‹€.
λΌμ΄λΈŒλŸ¬λ¦¬λŠ” com.microsoftμž…λ‹ˆλ‹€. azure : azure-keyvault : 1.2.2
μ½”λ“œ 슀 λ‹ˆνŽ«
문제λ₯Ό μΌμœΌν‚€λŠ” μ½”λ“œ 쑰각을 μΆ”κ°€ν•©λ‹ˆλ‹€.

@ κ°’ ( "$ {cluster-app-sb-connection-string}")
λ¬Έμžμ—΄ connectionString;
@Value ( "$ {cluster-app.sb.topic-name}")
λ¬Έμžμ—΄ topicName;
μ˜ˆμƒλ˜λŠ” 행동
μ˜ˆμƒν–ˆλ˜ 일에 λŒ€ν•œ λͺ…ν™•ν•˜κ³  κ°„κ²°ν•œ μ„€λͺ….

슀크린 μƒ·
ν•΄λ‹Ήλ˜λŠ” 경우 문제λ₯Ό μ„€λͺ…ν•˜λŠ” 데 λ„μ›€μ΄λ˜λŠ” 슀크린 샷을 μΆ”κ°€ν•©λ‹ˆλ‹€.

μ„€μ • (λ‹€μŒ 정보λ₯Ό μž‘μ„±ν•˜μ‹­μ‹œμ˜€) :

  • OS : [예 : iOS]
  • IDE : [예 : IntelliJ]
  • μ‚¬μš© 된 라이브러리의 버전

μΆ”κ°€ μ»¨ν…μŠ€νŠΈ
여기에 λ¬Έμ œμ— λŒ€ν•œ λ‹€λ₯Έ μ»¨ν…μŠ€νŠΈλ₯Ό μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.

정보 체크리슀트
μœ„μ˜ λ‹€μŒ 정보λ₯Ό λͺ¨λ‘ μΆ”κ°€ν–ˆλŠ”μ§€ ν™•μΈν•˜κ³  ν•„μˆ˜ ν•„λ“œλ₯Ό μ„ νƒν–ˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. 그렇지 μ•ŠμœΌλ©΄ λ°œν–‰μžλ₯Ό λΆˆμ™„μ „ν•œ λ³΄κ³ μ„œλ‘œ κ°„μ£Όν•©λ‹ˆλ‹€.

  • [x] 버그 μ„€λͺ… μΆ”κ°€
  • [] μž¬ν˜„ 단계 μΆ”κ°€
  • [] μ„€μ • 정보 μΆ”κ°€
Client azure-spring azure-spring-keyvault customer-reported question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 λ¬Έμ œλŠ” Key Vault Secrets의 Spring Boot μŠ€νƒ€ν„°κ°€ μž‘λ™ν•˜λŠ” λ°©μ‹μœΌλ‘œ 인해 λ°œμƒν•©λ‹ˆλ‹€. λΉ„ν™œμ„±ν™” 된 비밀을 ν•„ν„°λ§ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이제 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PR을 μž‘μ„±ν•©λ‹ˆλ‹€.

λͺ¨λ“  10 λŒ“κΈ€

@ TonySh127-ms Key Vault μŠ€νƒ€ν„° λ˜λŠ” SDKλ₯Ό 직접 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

@ TonySh127-ms와 μ˜€ν”„λΌμΈμœΌλ‘œ λ…Όμ˜ν–ˆμœΌλ©° 고객은 keyvault에 spring-boot-starterλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. μƒˆ SDKκ°€ μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”μ§€ SDK 츑의 확인이 ν•„μš”ν•©λ‹ˆλ‹€.

@AlexGhiondea @ vcolin7 후속 쑰치λ₯Ό μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@joshfree 와 @saraglunaμ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. @AlexGhiondea 및 @ vcolin7의 μ—…λ°μ΄νŠΈλ₯Ό 기닀리고 μžˆμŠ΅λ‹ˆλ‹€. 단기간에 ν•΄κ²°ν•  μˆ˜μ—†λŠ” 경우 μ•Œλ €μ£Όμ‹­μ‹œμ˜€. ν΄λΌμ΄μ–ΈνŠΈ 츑에 μ„€λͺ… ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ ν•œ 번 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

μ•ˆλ…•ν•˜μ„Έμš” @ TonySh127-ms,

이 문제λ₯Ό μ‘°μ‚¬ν•˜λŠ” 데 μ‹œκ°„μ„ 투자 ν•œ κ²°κ³Ό λ‹€μŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 고객이 λ³΄λŠ” λ™μž‘μ€ Key Vault Secrets의 Spring Boot μŠ€νƒ€ν„°κ°€ μž‘λ™ν•˜λŠ” λ°©μ‹μœΌλ‘œ 인해 λ°œμƒν•©λ‹ˆλ‹€. 기본적으둜이 μŠ€νƒ€ν„°λ₯Ό μ‚¬μš©ν•˜λŠ” Spring μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 싀행될 λ•Œλ§ˆλ‹€ / secrets μ—”λ“œ 포인트λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ§€μ •λœ μ €μž₯μ†Œμ—μžˆλŠ” λͺ¨λ“  κΈ°μ‘΄ λΉ„λ°€μ˜ 이름을 κ°€μ Έ 였며, μ΄λŠ” λͺ¨λ“  ν™œμ„±ν™” 및 λΉ„ν™œμ„±ν™” 된 λΉ„λ°€ (μ‚­μ œ 된 비밀이 μ•„λ‹˜)μ„λ‘œλ“œν•©λ‹ˆλ‹€. ν•„μš”ν•œ 경우 νŠΉμ • λΉ„λ°€μ˜ μ„ΈλΆ€ 정보λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€. Key Vault μ„œλΉ„μŠ€ λ˜λŠ” SDK의 λ¬Έμ œκ°€ μ•„λ‹ˆλΌ Spring Boot μŠ€νƒ€ν„°κ°€ μ½”λ”© 된 λ°©μ‹μ˜ κ²°κ³Ό μΌλΏμž…λ‹ˆλ‹€.

단기 μ†”λ£¨μ…˜μ€ Spring Boot μŠ€νƒ€ν„°κ°€ μ•„λ‹ˆλΌ Key Vault SDK 자체λ₯Ό 직접 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œν•˜λ©΄ 고객은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 수λͺ…μ£ΌκΈ° λ™μ•ˆ μ–΄λ–€ λΉ„λ°€μ΄λ‘œλ“œλ˜λŠ”μ§€μ— λŒ€ν•΄ 더 λ§Žμ€ μ œμ–΄λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ λ³ΌνŠΈμ—μ„œ μΈμ¦μ„œλ₯Ό λ§Œλ“€κ³  μ‚­μ œν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ λ„ˆλ¬΄ λ§Žμ€ λΉ„λ°€μ„λ‘œλ“œν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μΆ©λŒν•˜λŠ” 경우λ₯Ό μž¬ν˜„ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 이와 같은 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ €λ©΄ κ³ κ°μœΌλ‘œλΆ€ν„° 더 λ§Žμ€ 정보가 ν•„μš”ν•©λ‹ˆλ‹€.이 정보λ₯Ό μž¬ν˜„ ν•  μˆ˜μžˆλŠ” 버전 및 μƒ˜ν”Œ μ½”λ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” 쒅속성은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@ vcolin7 ν™œμ„±ν™” 된 λΉ„λ°€ λ§Œλ‘œλ“œν•˜λŠ” SDK에 전달할 μˆ˜μžˆλŠ” μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆκΉŒ? Spring ν†΅ν•©μ—μ„œ λΉ„ν™œμ„±ν™” 된 λΉ„λ°€μ„λ‘œλ“œν•΄μ„œλŠ” μ•ˆλ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@saragluna μ•ˆνƒ€κΉκ²Œλ„ μ„œλΉ„μŠ€λ₯Ό 전달할 μˆ˜μžˆλŠ” 맀개 λ³€μˆ˜κ°€ μ—†μ–΄ ν™œμ„±ν™” 된 λΉ„λ°€ 만 제곡 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” Key Vault Secrets의 Spring Boot μŠ€νƒ€ν„°κ°€ μž‘λ™ν•˜λŠ” λ°©μ‹μœΌλ‘œ 인해 λ°œμƒν•©λ‹ˆλ‹€. λΉ„ν™œμ„±ν™” 된 비밀을 ν•„ν„°λ§ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이제 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PR을 μž‘μ„±ν•©λ‹ˆλ‹€.

@ TonySh127-ms
μš°λ¦¬λŠ” dev νŒ¨ν‚€μ§€λ₯Ό λΉŒλ“œν•©λ‹ˆλ‹€. μ‹œλ„ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
이 νŽ˜μ΄μ§€ λ₯Ό 따라 dev νŒ¨ν‚€μ§€λ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ‹­μ‹œμ˜€.

μ•ˆλ…•ν•˜μ„Έμš”, λ¬Έμ œκ°€ ν•΄κ²° 된 κ²ƒμœΌλ‘œ ν™•μΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이제이 μŠ€λ ˆλ“œλ₯Ό 닫을 수 μžˆμŠ΅λ‹ˆλ‹€. λ§Žμ€ λ…Έλ ₯κ³Ό μ‹œκ°„μ„ λ‚΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ !!!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰