इस प्रतिनिधित्व के काम करने का सैद्धांतिक विवरण यहाँ है:
Service Account A को KMS में एक विशेष कुंजी का उपयोग करके सीधे डिक्रिप्ट करने की पहुँच है।
Service Account B को useToDecryptViaDelegation अनुमति प्रदान की जाती है। इससे यह Service Account A की ओर से KMS से डेटा डिक्रिप्ट करने का अनुरोध कर सकता है।
इस अनुमति का उपयोग उस तरीके में निहित है जिस तरह से KMS सेवा अनुमतियों की जाँच करती है जब एक डिक्रिप्शन अनुरोध किया जाता है।
जब आप Google Cloud KMS API का उपयोग करके (Python या किसी अन्य भाषा में) एक मानक डिक्रिप्शन अनुरोध करते हैं, तो सेवा जाँचती है कि अनुरोध करने वाले सर्विस अकाउंट के पास आवश्यक अनुमतियाँ हैं या नहीं। यदि अनुरोध useToDecryptViaDelegation अनुमति वाले सर्विस अकाउंट द्वारा किया जाता है, तो KMS यह सत्यापित करता है कि क्या यह अकाउंट कुंजी के मालिक की ओर से डिक्रिप्शन का अनुरोध करने के लिए अधिकृत है।
प्रतिनिधित्व के लिए सेटअप करना
कस्टम रोल परिभाषित करें: एक YAML फाइल (उदाहरण के लिए, custom_role.yaml) बनाएं जो कस्टम रोल को परिभाषित करती है। इस फाइल में cloudkms.cryptoKeyVersions.useToDecryptViaDelegation अनुमति शामिल होनी चाहिए। यहाँ इस फाइल का एक उदाहरण है:
title:"KMS Decryption via Delegation"description:"Allows decryption via delegation"stage:"GA"includedPermissions:- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
gcloud CLI का उपयोग करके Custom Role बनाएं: अपने Google Cloud प्रोजेक्ट में custom role बनाने के लिए निम्नलिखित कमांड का उपयोग करें:
[YOUR_PROJECT_ID] की जगह अपने Google Cloud प्रोजेक्ट ID से बदलें।
सर्विस अकाउंट को कस्टम रोल प्रदान करें: इस अनुमति का उपयोग करने वाले सर्विस अकाउंट को अपना कस्टम रोल असाइन करें। निम्नलिखित कमांड का उपयोग करें:
# Give this permission to the service account to impersonategcloudprojectsadd-iam-policy-binding [PROJECT_ID] \--member"serviceAccount:[SERVICE_ACCOUNT_B_EMAIL]" \--role "projects/[PROJECT_ID]/roles/[CUSTOM_ROLE_ID]"# Give this permission over the project to be able to impersonate any SAgcloudprojectsadd-iam-policy-binding [YOUR_PROJECT_ID] \--member="serviceAccount:[SERVICE_ACCOUNT_EMAIL]" \--role="projects/[YOUR_PROJECT_ID]/roles/kms_decryptor_via_delegation"
अपनी प्रोजेक्ट ID और सर्विस अकाउंट की ईमेल के साथ `[YOUR_PROJECT_ID]` और `[SERVICE_ACCOUNT_EMAIL]` को बदलें।
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ शून्य से लेकर हीरो तक AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**।
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
</details>