GCP - KMS Privesc
KMS
Taarifa kuhusu KMS:
Kumbuka kwamba katika KMS idhini hazirithi tu kutoka kwa Mashirika, Folda na Miradi bali pia kutoka kwa Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToDecrypt
Unaweza kutumia idhini hii kufungua taarifa kwa kutumia funguo ambayo una idhini hii juu yake.
cloudkms.cryptoKeys.setIamPolicy
cloudkms.cryptoKeys.setIamPolicy
Mshambuliaji mwenye ruhusa hii anaweza kujipe ruhusa za kutumia funguo kufungua taarifa.
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Hapa kuna ufafanuzi wa kimsingi wa jinsi ugawaji huu unavyofanya kazi:
Akaunti ya Huduma A ina ufikiaji wa moja kwa moja wa kufungua kwa kutumia funguo maalum katika KMS.
Akaunti ya Huduma B inapata ruhusa ya
useToDecryptViaDelegation
. Hii inaruhusu kuomba KMS kufungua data kwa niaba ya Akaunti ya Huduma A.
Matumizi ya ruhusa hii ni ya kimya kimya katika njia ambayo huduma ya KMS inakagua ruhusa wakati ombi la kufungua linapotolewa.
Unapofanya ombi la kawaida la kufungua kwa kutumia Google Cloud KMS API (katika Python au lugha nyingine), huduma inakagua ikiwa akaunti ya huduma inayohitaji ina ruhusa zinazohitajika. Ikiwa ombi linatolewa na akaunti ya huduma yenye ruhusa ya useToDecryptViaDelegation
, KMS inathibitisha ikiwa akaunti hii inaruhusiwa kuomba kufungua kwa niaba ya chombo kinachomiliki funguo.
Kuweka Mambo kwa ajili ya Ugawaji
Bainisha Jukumu Maalum: Tengeneza faili ya YAML (mfano,
custom_role.yaml
) inayobainisha jukumu maalum. Faili hii inapaswa kujumuisha ruhusa yacloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Hapa kuna mfano wa jinsi faili hii inaweza kuonekana:
Unda Jukumu Maalum kwa Kutumia gcloud CLI: Tumia amri ifuatayo kuunda jukumu maalum katika mradi wako wa Google Cloud:
Badilisha [YOUR_PROJECT_ID]
na kitambulisho chako cha mradi wa Google Cloud.
Patia Jukumu Maalum Akaunti ya Huduma: Teua jukumu lako maalum kwa akaunti ya huduma ambayo itakuwa ikitumia ruhusa hii. Tumia amri ifuatayo:
Replace [YOUR_PROJECT_ID]
and [SERVICE_ACCOUNT_EMAIL]
with your project ID and the email of the service account, respectively.
Last updated