Add and manage Google Cloud Platform (GCP) service accounts in Opal.
Opal lets you view and manage your GCP service accounts as non-human identities (NHIs). This means you can have control over who has access to your service accounts, and also what resources your service accounts themselves have access to.
Service Accounts that have access to your resources will be automatically imported into Opal as children of their associated GCP projects. Admins can also select additional Service Accounts to manually import into Opal:
In the “User Access” tab, admins can view all users that have access to a Service Account, including what role they have, when their access expires, and how they obtained the access.
In the below example, Cynthia has access to the Service Account Admin role through a group which expires in a year, whereas Roberto has direct access to the Token Creator role expiring in a day. Emanuel is an Owner of the entire GCP Organization, so he inherited that role onto the Service Account as well.
In the “Resources” tab, admins can similarly view all resources that a Service Account has access to.
Here we see that the Service Account has access to the Chronicle Service Agent role on the Bigquery Dataset, which it has also inherited onto all of the Dataset’s tables. We can also see that permanent access has been directly granted to the Service Account on the Events table.
In the “Non-human Access” tab of other resources, admins can view which service accounts have access to the resource.By clicking “Add Principals”, more service accounts can be granted access to the resource as well:
Last modified on November 4, 2025
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Opal Security Docs","colors":{"primary":"#0C7997","light":"#EDFCFC","dark":"#074055"},"logo":{"light":"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=93a4bd75f157f9f0ab43cdf4d715b5cd","dark":"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=1774b545e4f1c5cad647f5194f7b26d9"},"favicon":{"light":"https://mintcdn.com/opalsecurity/DRAwGKUXMxLRQouh/logo/icon-opal-black.svg?fit=max\u0026auto=format\u0026n=DRAwGKUXMxLRQouh\u0026q=85\u0026s=9c8bd1204b6b5b83542c2ab5be549858","dark":"https://mintcdn.com/opalsecurity/DRAwGKUXMxLRQouh/logo/icon-opal-white.svg?fit=max\u0026auto=format\u0026n=DRAwGKUXMxLRQouh\u0026q=85\u0026s=73b53b4ceab6ae0b00e30b2042a6020a"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"ga4":{"measurementId":"G-1PPPM1WF6D"}},"errors":{"404":{"redirect":false,"title":"Page can't be found","description":"Sorry! This page might have been moved, or the link might be broken. Go back to our documentation via https://docs.opal.dev/docs/welcome."}},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"opalsecurity","hasAudioNarration":false,"actualSubdomain":"opalsecurity","customDomains":["docs.opal.dev"],"gitSource":{"type":"github","owner":"opalsecurity","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae53a3b88b90693e911fadb","collectionId":"58745dd4-af12-4aee-a56b-e01162c67c8c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae53a3b88b90693e911fadb"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae53a3b88b90693e911fadb","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":212},{"language":"default","tag":"Opal API","count":207},{"language":"default","tag":"Documentation","count":99},{"language":"default","tag":"Integrations","count":94},{"language":"default","tag":"Entitlement Management","count":63},{"language":"default","tag":"resources","count":34},{"language":"default","tag":"groups","count":32},{"language":"default","tag":"Getting Started","count":25},{"language":"default","tag":"Access Management","count":22},{"language":"default","tag":"Infrastructure","count":22}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":true,"email":"support@opal.dev","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"integrations/gcp-service-accounts","slug":"/integrations/gcp-service-accounts","pageMetadata":{"title":"GCP Service Accounts","description":"Add and manage Google Cloud Platform (GCP) service accounts in Opal.","href":"/integrations/gcp-service-accounts"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Add and manage Google Cloud Platform (GCP) service accounts in Opal.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Opal lets you view and manage your GCP service accounts as non-human identities (NHIs). This means you can have control over who has access to your service accounts, and also what resources your service accounts themselves have access to.`}),`\n`,_jsx(Heading,{level:`2`,id:`add-a-service-account`,children:`Add a Service Account`}),`\n`,_jsx(_components.p,{children:`In order to begin importing Service Accounts into Opal, you need to update your Opal Service Account’s Role to have the following permission:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`iam.serviceAccounts.get`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`iam.serviceAccounts.getIamPolicy`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`iam.serviceAccounts.list`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`iam.serviceAccounts.setIamPolicy`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Service Accounts that have access to your resources will be automatically imported into Opal as children of their associated GCP projects. Admins can also select additional Service Accounts to manually import into Opal:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png?fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=0b3a630694d35f0b961b69db10c08ba1`,alt:``,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`872`,height:`872`,\"data-path\":`images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=dd80901bfad0d681201a78011ac883aa 280w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=2642f88604fb450df863e1bf07d4bc09 560w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=4f00e5427ee361a6dd284bc8592dcfa3 840w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=881c548b2b9543091a3bb36a3c3358eb 1100w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=f5ba0320f980d393f40b492e19b16a96 1650w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fc1569732daa3cab1dd89844d9f3d2d3bff85f66e418b15ab7739978a60339b-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=cdafccd2675b4dd1c544061ef0bc72d1 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`manage-access`,children:`Manage Access`}),`\n`,_jsx(_components.p,{children:`In the “User Access” tab, admins can view all users that have access to a Service Account, including what role they have, when their access expires, and how they obtained the access.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`In the below example, Cynthia has access to the Service Account Admin role through a group which expires in a year, whereas Roberto has direct access to the Token Creator role expiring in a day. Emanuel is an Owner of the entire GCP Organization, so he inherited that role onto the Service Account as well.`}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png?fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=2391a2c68fb080dc153dfeede047b9bf`,alt:``,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`798`,height:`798`,\"data-path\":`images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=6789fdda23d040ec9f1e521c65d8d204 280w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=b8cd8587d9cb7702387b68df9f5f2903 560w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=9ea0936b3eeb30c65a294d5d93990165 840w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=628021f46ccbd184432c9c97f5ec2a89 1100w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=e2b68c25005f4bfebab2af2221d1e89c 1650w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/8fedb30f9c63c6a720b74420d61792ae2533a88294fdf09dca8d3e6b73a45e51-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=d095fc8988fc90b83e1ce942f2d06b67 2500w`}),`\n`,_jsx(_components.p,{children:`In the “Resources” tab, admins can similarly view all resources that a Service Account has access to.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Here we see that the Service Account has access to the Chronicle Service Agent role on the Bigquery Dataset, which it has also inherited onto all of the Dataset’s tables. We can also see that permanent access has been directly granted to the Service Account on the Events table.`}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png?fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=bf4226960eb3078aa75f440670e7f213`,alt:``,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`799`,height:`799`,\"data-path\":`images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=aed1ee8f10b051198c25c980b7b21bd8 280w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=556c622a9668095094e4f03e2f8b11db 560w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=466998dac38dd734bd56a02209155568 840w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=45b9b089d0c114343e6924363ed4bdd8 1100w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=fbb17601f29acc03d40d8ee8bc6f455f 1650w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/02a3c21a7a7594bd2238467a02953fb7d1e19b937add69ef2a534fc9f866303a-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=b05d2b7c4967b19689d4d6e4d7dbdc6d 2500w`}),`\n`,_jsx(_components.p,{children:`In the “Non-human Access” tab of other resources, admins can view which service accounts have access to the resource.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png?fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=2e1d8e73bef191bd76db3b548ae2253c`,alt:``,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`798`,height:`798`,\"data-path\":`images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=19146f2ab6e6434772ba4eed1f8c6982 280w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=c346c7defc249a500063beec860bccab 560w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=c980040cec9c144edeb34cab6f6db196 840w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=d9e7f65db80072b188260d7af0cf4df3 1100w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=f404ed5c5deb23d5b2188b3a32b3af26 1650w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/29bfb95234a6a3fb9b912b5f7affa786526126186192e26d38845aa985af7675-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=df35c00c62f076ddf7cc93d81f418f48 2500w`}),`\n`,_jsx(_components.p,{children:`By clicking “Add Principals”, more service accounts can be granted access to the resource as well:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png?fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=70aed432bc1110b41f1c258324cc3b29`,alt:``,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`798`,height:`798`,\"data-path\":`images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=e9d7cdb3d5f854ccb7c7121ef0935bac 280w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=614ae0df8b3589e619a00196a00b8e0a 560w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=199b8250caef118282e6460c9e276daf 840w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=ec922df577aa7c6709278f3712e468c6 1100w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=e6d958841e14102cf721e4969ce202a1 1650w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/d9a19fc9771c2387a47aa5768a9d221e77c85fe310fc2a11e2220df4f62ecec0-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=52937aa03a98c847e174fe2bc1db8e47 2500w`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"GCP Service Accounts","description":"Add and manage Google Cloud Platform (GCP) service accounts in Opal.","href":"/integrations/gcp-service-accounts"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Add a Service Account","slug":"add-a-service-account","depth":2,"children":[]},{"title":"Manage Access","slug":"manage-access","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/opalsecurity/d0e14c3cf9bbd682/changelog-scraper.js"],"subdomain":"opalsecurity","siteName":"Opal Security Docs","title":"GCP Service Accounts - Opal Security Docs","contextualStarterQuestions":[{"_id":"69b0b49b0e8c1bf71a51a4b8","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"How do I add a service account?","status":"active","generatedBy":"contextual","path":"integrations/gcp-service-accounts","createdAt":"2026-03-11T00:17:31.857Z","updatedAt":"2026-03-11T00:17:31.857Z","__v":0},{"_id":"69b0b49b0e8c1bf71a51a4b9","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"What permissions does Opal need?","status":"active","generatedBy":"contextual","path":"integrations/gcp-service-accounts","createdAt":"2026-03-11T00:17:31.857Z","updatedAt":"2026-03-11T00:17:31.857Z","__v":0},{"_id":"69b0b49b0e8c1bf71a51a4ba","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"Can I manually import accounts?","status":"active","generatedBy":"contextual","path":"integrations/gcp-service-accounts","createdAt":"2026-03-11T00:17:31.857Z","updatedAt":"2026-03-11T00:17:31.857Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-28T20:32:08.719Z","gitLastModified":"2025-11-04T00:38:50.000Z","originalFileLocation":"integrations/gcp-service-accounts.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Add and manage Google Cloud Platform (GCP) service accounts in Opal.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Opal Security Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"GCP Service Accounts - Opal Security Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add and manage Google Cloud Platform (GCP) service accounts in Opal.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Opal Security Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.opal.dev/integrations/gcp-service-accounts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://opalsecurity.mintlify.app/_mintlify/api/og/v2?division=Google+Cloud+Platform+%28GCP%29\u0026amp;title=GCP+Service+Accounts\u0026amp;description=Add+and+manage+Google+Cloud+Platform+%28GCP%29+service+accounts+in+Opal.\u0026amp;theme=287ef1256bbb1bf2a61f3fd2\u0026amp;signature=d7317df5becb517d2128a36739b5bd88e5bc42a9dda1527126bfbc93370985a5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"GCP Service Accounts - Opal Security Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add and manage Google Cloud Platform (GCP) service accounts in Opal.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://opalsecurity.mintlify.app/_mintlify/api/og/v2?division=Google+Cloud+Platform+%28GCP%29\u0026amp;title=GCP+Service+Accounts\u0026amp;description=Add+and+manage+Google+Cloud+Platform+%28GCP%29+service+accounts+in+Opal.\u0026amp;theme=287ef1256bbb1bf2a61f3fd2\u0026amp;signature=d7317df5becb517d2128a36739b5bd88e5bc42a9dda1527126bfbc93370985a5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Opal Security Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C7997\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.opal.dev/integrations/gcp-service-accounts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/gcp-service-accounts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.opal.dev/#organization\",\"name\":\"Opal Security Docs\",\"url\":\"https://docs.opal.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=93a4bd75f157f9f0ab43cdf4d715b5cd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.opal.dev#website\",\"name\":\"Opal Security Docs\",\"url\":\"https://docs.opal.dev\",\"publisher\":{\"@id\":\"https://docs.opal.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.opal.dev/integrations/gcp-service-accounts#webpage\",\"url\":\"https://docs.opal.dev/integrations/gcp-service-accounts\",\"name\":\"GCP Service Accounts\",\"description\":\"Add and manage Google Cloud Platform (GCP) service accounts in Opal.\",\"dateModified\":\"2025-11-04T00:38:50.000Z\",\"isPartOf\":{\"@id\":\"https://docs.opal.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.opal.dev/integrations/gcp-service-accounts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.opal.dev/integrations/gcp-service-accounts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Entitlement Management\",\"item\":\"https://docs.opal.dev/integrations/setting-up-your-aws-organization-in-opal\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Infrastructure\",\"item\":\"https://docs.opal.dev/integrations/setting-up-your-aws-organization-in-opal\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Google Cloud Platform (GCP)\",\"item\":\"https://docs.opal.dev/integrations/google-cloud-platform\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"GCP Service Accounts\",\"item\":\"https://docs.opal.dev/integrations/gcp-service-accounts\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.opal.dev/integrations/gcp-service-accounts#article\",\"headline\":\"GCP Service Accounts\",\"name\":\"GCP Service Accounts\",\"description\":\"Add and manage Google Cloud Platform (GCP) service accounts in Opal.\",\"url\":\"https://docs.opal.dev/integrations/gcp-service-accounts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.opal.dev/integrations/gcp-service-accounts#webpage\"},\"dateModified\":\"2025-11-04T00:38:50.000Z\",\"publisher\":{\"@id\":\"https://docs.opal.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.opal.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Opal Security Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Opal Security Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/welcome"}]},{"tab":"Integrations","pages":[{"title":"Integrations","sidebarTitle":"Overview","mode":"wide","href":"/integrations/overview"},{"group":"IDP \u0026 HRIDP","pages":[{"group":"Okta","pages":[{"title":"Okta","sidebarTitle":"Connect to Okta","href":"/integrations/okta"},{"title":"Okta IDP/HRIS Integration","href":"/integrations/okta-idphris-integration"},{"title":"Import Okta apps","href":"/integrations/okta-apps"},{"title":"Okta rate limits","href":"/integrations/okta-rate-limits"}]},{"group":"Google","pages":[{"title":"Google","sidebarTitle":"Connect to Google","href":"/integrations/google"},{"title":"Google IDP/HRIS Integration","href":"/integrations/google-idphris-integration"},{"title":"Google Groups","href":"/integrations/google-groups"},{"title":"Google Workspace","href":"/integrations/google-workspace"}]},{"group":"Azure","pages":[{"title":"Azure","sidebarTitle":"Connect to Azure","href":"/integrations/azure"},{"title":"Azure Entra IDP/HRIS Integration","href":"/integrations/azure-entra-idphris-integration"},{"title":"Azure Infrastructure Setup","href":"/integrations/azure-infrastructure-setup"},{"title":"Add Azure Databases","href":"/integrations/adding-azure-sql-databases"},{"title":"Azure Real Time Sync Setup","href":"/integrations/azure-real-time-sync"}]},{"group":"Active Directory","pages":[{"title":"Overview","sidebarTitle":"Connect to Active Directory","href":"/integrations/active-directory"},{"title":"Active Directory IDP/HRIS Integration","href":"/integrations/active-directory-idphris-integration"}]},{"group":"Workday","pages":[{"title":"Overview","sidebarTitle":"Connect to Workday","href":"/integrations/workday"},{"title":"Workday IDP/HRIS Integration","href":"/integrations/workday-idphris-integration"}]},{"group":"Rippling","pages":[{"title":"Rippling IDP/HRIS Integration","href":"/integrations/rippling-idphris-integration"}]}]},{"group":"Entitlement Management","pages":[{"group":"Infrastructure","expanded":true,"pages":[{"group":"Amazon Web Services (AWS)","expanded":false,"pages":[{"title":"Amazon Web Services (AWS)","href":"/integrations/setting-up-your-aws-organization-in-opal"},{"title":"Configure AWS for self-hosted Opal","href":"/integrations/aws-integration-on-prem-setup"},{"title":"Configure additional AWS accounts to manage in Opal","href":"/integrations/configure-additional-aws-accounts-to-manage-in-opal"},{"title":"AWS IAM Identity Center Workflows","href":"/integrations/aws-iam-identity-center-formerly-aws-sso"},{"title":"Add an IAM role","href":"/integrations/adding-an-iam-role"},{"title":"Add an RDS database","href":"/integrations/adding-an-rds-database"},{"title":"Add an EC2 instance","href":"/integrations/adding-an-ec2-instance"},{"title":"Add an EKS cluster","href":"/integrations/adding-an-eks-cluster"},{"title":"Adding AWS Resources to Opal Groups via AWS Tags","href":"/integrations/adding-aws-resources-to-opal-groups-via-aws-tags"},{"title":"AWS Real Time Sync Setup","href":"/integrations/aws-real-time-sync"}]},{"group":"Google Cloud Platform (GCP)","expanded":false,"pages":[{"title":"Google Cloud Platform (GCP)","sidebarTitle":"Connect to GCP","href":"/integrations/google-cloud-platform"},{"title":"Add an organization","href":"/integrations/adding-gcp-organization"},{"title":"Add a project","href":"/integrations/adding-gcp-project"},{"title":"Add a folder","href":"/integrations/adding-gcp-folder"},{"title":"Add a BigQuery Dataset","href":"/integrations/adding-bigquery-dataset"},{"title":"Add a Cloud Storage bucket","href":"/integrations/adding-gcp-bucket"},{"title":"Add a Cloud SQL Instance","href":"/integrations/adding-sql-instance"},{"title":"Add a Compute Engine Instance","href":"/integrations/adding-compute-instance"},{"title":"Google Kubernetes Engine (GKE)","description":"Learn how to manage user access with Google Kubernetes Engine (GKE).","href":"/integrations/google-kubernetes-engine-getting-started"},{"title":"GCP Service Accounts","href":"/integrations/gcp-service-accounts"}]},{"group":"Snowflake","expanded":false,"pages":[{"title":"Snowflake","description":"Learn how to connect your Snowflake account and use Opal to manage and review access.","sidebarTitle":"Connect to Snowflake","href":"/integrations/snowflake"},{"title":"Snowflake User Provisioning","href":"/integrations/snowflake-user-provisioning"}]}]},{"title":"1Password","href":"/integrations/1password"},{"title":"Anthropic Platform","href":"/integrations/anthropic"},{"title":"Astra","href":"/integrations/astra"},{"title":"Axiom","href":"/integrations/axiom"},{"title":"Clickhouse","href":"/integrations/clickhouse"},{"title":"Atlassian Confluence","sidebarTitle":"Atlassian Confluence","href":"/integrations/confluence"},{"title":"Coupa","href":"/integrations/coupa"},{"title":"Cursor","href":"/integrations/cursor"},{"title":"Databricks","href":"/integrations/databricks"},{"title":"Datadog","href":"/integrations/datadog"},{"title":"Devin AI","href":"/integrations/devin"},{"title":"Docusign","href":"/integrations/docusign"},{"title":"Duo","href":"/integrations/duo"},{"title":"GitHub","href":"/integrations/github"},{"title":"GitHub Enterprise","href":"/integrations/github-enterprise"},{"title":"GitLab","href":"/integrations/gitlab"},{"title":"Grafana","href":"/integrations/grafana"},{"title":"Hubspot","href":"/integrations/hubspot"},{"title":"Incident.io","href":"/integrations/incidentio"},{"title":"Atlassian Jira","sidebarTitle":"Atlassian Jira","href":"/integrations/jira"},{"title":"LDAP","href":"/integrations/ldap"},{"title":"Linear","sidebarTitle":"Linear","href":"/integrations/linear"},{"title":"NetSuite","href":"/integrations/netsuite"},{"title":"Okta CIAM","href":"/integrations/okta-ciam"},{"title":"OpenAI Platform","href":"/integrations/openai"},{"title":"Oracle Fusion Cloud","href":"/integrations/oracle-fusion-cloud"},{"title":"PagerDuty","href":"/integrations/pagerduty-entitlements"},{"title":"Ramp","tag":"NEW","href":"/integrations/ramp"},{"title":"Rippling","tag":"NEW","href":"/integrations/rippling"},{"title":"Rootly","href":"/integrations/rootly"},{"title":"Salesforce","href":"/integrations/salesforce"},{"title":"Slack users and groups","href":"/integrations/slack-user-groups"},{"title":"Salesforce Tableau","href":"/integrations/tableau"},{"title":"Tailscale","href":"/integrations/tailscale"},{"title":"Teleport","href":"/integrations/teleport"},{"title":"Twingate","href":"/integrations/twingate"},{"title":"Vercel","tag":"NEW","href":"/integrations/vercel"},{"title":"Workday groups and roles","href":"/integrations/workday-groups-and-roles"},{"title":"Wrike","tag":"NEW","href":"/integrations/wrike"},{"title":"Zendesk","href":"/integrations/zendesk"},{"title":"Zoom","href":"/integrations/zoom"}]},{"group":"Productivity Tools","pages":[{"group":"Communication","expanded":true,"pages":[{"title":"Google Chat","href":"/integrations/google-chat"},{"title":"Lark","href":"/integrations/lark"},{"title":"Slack","href":"/integrations/slack"}]},{"group":"Ticketing","expanded":true,"pages":[{"title":"Freshservice","href":"/integrations/freshservice"},{"title":"Jira","href":"/integrations/jira-ticketing"},{"title":"Linear","href":"/integrations/linear-ticketing"},{"title":"Notion","href":"/integrations/notion"},{"title":"Risotto","tag":"BETA","href":"/integrations/risotto"},{"title":"ServiceNow","href":"/integrations/servicenow"},{"title":"Shortcut","href":"/integrations/shortcut"}]},{"group":"On-call","expanded":true,"pages":[{"title":"Opsgenie","deprecated":true,"href":"/integrations/opsgenie"},{"title":"PagerDuty","deprecated":true,"href":"/integrations/pagerduty-oncall"}]}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/authentication"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/changelog"}]}]},"basePath":"","title":"GCP Service Accounts - Opal Security Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BG6oD64b.js","lightbox-handle-r17bVUz3.js"]}