- adding raw data field #695 (@mikiodehartj1 @gastonyelmini)
- @mikiodehartj1
- Gaston Yelmini (@gastonyelmini)
- Update questions.yaml #693 (@mikiodehartj1)
- Release questions #691 (@jzolo22)
- test question to be deleted #690 (@mikiodehartj1)
- @mikiodehartj1
- Julia Zolotarev (@jzolo22)
- INT-10878: update integration error handling #688 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10820: add key check to skipped projects step #687 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10820: update skipped project steps to not be case sensitive #686 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-8094: ingest compute instance metadata fields #659 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10621: add error logger #647 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10621: update error handling logic #646 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10621: expose PermissionErrorHandlingOptions to iterateApi #645 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10621: improve GCP Authorization errors handling #644 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10459: redact assertion #643 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- NT-10459: add retry to client get function calls #642 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- Redact tokens #641 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10459: logs clean up #640 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-9865: check target project ID in validate invocation #639 (@gastonyelmini)
- INT-8998: refactor compute service #638 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-9937: add null check #637 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-9937: add ingest skipped projects ingestion #636 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- Julia Zolotarev (@jzolo22)
- Bump package version #634 (@jzolo22)
- Combined compliance question mapping updates #633 (@mikiodehartj1 @jzolo22)
- updated section 3 #595 (@mikiodehartj1)
- Updated GCP Questions v1.3 and v2.0 #586 (@mikiodehartj1 @jzolo22)
- Add mappings 1.1-3.4 #585 (@mikiodehartj1)
- GCP 1.1-1.3 Change #578 (@mikiodehartj1 @jzolo22)
- Apply remove-codeql with multi-gitter [ci skip] (@electricgull)
- @mikiodehartj1
- Cameron Griffin (@electricgull)
- Julia Zolotarev (@jzolo22)
- NO-TICKET: update log level #632 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-8952: update SDK packages #631 (@gastonyelmini)
- Fix x-cortex-service-groups where tier-4 was set incorrectly (@jablonnc)
- Gaston Yelmini (@gastonyelmini)
- Noah Jablonski (@jablonnc)
- INT-9927: propagate run service metadata to entity #630 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-10036: increase timeout #629 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-9871: add missing import #627 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-9871: add ingest sources #626 (@gastonyelmini)
- Populate CODEOWENRS, baseline package.json and baseline cortex.yaml (@jablonnc)
- Gaston Yelmini (@gastonyelmini)
- Noah Jablonski (@jablonnc)
- INT-9750: update 403 log event #625 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-9705: add throwMissingPermissionError flag for edge cases #624 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-9642 Bump public sdk version #621 (@JakeFerrero)
- Fix questions command #623 (@i5o)
- Set right parameter for questions test #622 (@i5o)
- Ignacio Rodríguez (@i5o)
- Jake Ferrero (@JakeFerrero)
- INT-9750: change permission errors to warnings #620 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- Upgrade to SDK v10 #619 (@austinkelleher)
- Austin Kelleher (@austinkelleher)
- INT-8705: avoid extra inventory calls if api is disabled #618 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-8173: change cloud logging status type #617 (@mishelashala)
- Michell Ayala (@mishelashala)
- chore: bump version #616 (@mishelashala)
- INT-8174: add mysql instance parser #615 (@mishelashala)
- INT-8173: expose cloudLoggingStatus #614 (@mishelashala)
- Section 6 #603 (@mikiodehartj1)
- postgresql #605 (@mikiodehartj1)
- changes to section 4 #602 (@mikiodehartj1)
- changes to section 3 #601 (@mikiodehartj1)
- @mikiodehartj1
- Michell Ayala (@mishelashala)
- [INT-7879]: bump googleapis version #610 (@mishelashala)
- Michell Ayala (@mishelashala)
- INT-8141: ingest compute instance Inventory data #613 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- bumping README.md #612 (@mishelashala)
- [INT-8175]: expose enable confidencial compute #609 (@mishelashala)
- [INT-8174]: add hasRootPassword to google_sql_mysql_instance #608 (@mishelashala)
- [INT-8173]: add cloud logging enabled prop #607 (@mishelashala)
- Michell Ayala (@mishelashala)
- bob bisantz (@sl45082)
- refactor(INT-7898): refactor Google Cloud Storage Bucket public property #596 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- Bump SDK Version #594 (@Nick-NCSU)
- changes to questions #590 (@mikiodehartj1)
- @mikiodehartj1
- Nick Thompson (@Nick-NCSU)
- Samuel Poulton (@VDubber)
- INT-7913: fix Audit Config log type additional property #589 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- FIX(int-7914) Added error handling in case dataset/tables returns 404 #588 ([email protected])
- Gonzalo Avalos Ribas (@Gonzalo-Avalos-Ribas)
- INT-7797: refactor private ca #587 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-7798: fix org steps running with undefined project id #582 (@gastonyelmini)
- INT-6970: document Google apis automatically #581 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- INT-7619: fix duplicated Audit Config IAM Policy relationship key #579 (@gastonyelmini @ndowmon)
- Gaston Yelmini (@gastonyelmini)
- Nick Dowmon (@ndowmon)
- Speed up buckets and tables #580 (@ndowmon)
- feat(web-security-scanner): ingest Google Web Security Scanner service #567 ([email protected])
- fix(INT-6744): add debug log if timeout error #576 ([email protected])
- fix(INT-6706): check service account key in validateInvocationConfig #571 ([email protected])
- feat(INT-5712): log disabled steps by API Service #574 ([email protected])
- fix(INT-7041): fix broken validate questions action #575 ([email protected])
- feat(INT-6665): review GCP permissions #570 ([email protected])
- feat(INT-6599): create document permissions script #568 ([email protected])
- Gaston Yelmini (@gastonyelmini)
- Nick Dowmon (@ndowmon)
- feat(INT-4506): add publicIpAddress field to compute entity #572 (@gastonyelmini)
- Gaston Yelmini (@gastonyelmini)
- fix(INT-6619): fix GH action issue #569 ([email protected])
- feat(INT-6165): change permissions logs to warnings #566 ([email protected])
- INT-5629 - Cache packages in
actions/setup-node
#565 (@austinkelleher) - Create data model for Web Security Scanner #559 (@Nick-NCSU)
- Merging CodeQL #564 (@electricgull)
- INT-5687 Limit when we print missing_permission job log for org policy #563 (@JakeFerrero)
- Austin Kelleher (@austinkelleher)
- Cameron Griffin (@electricgull)
- Gaston Yelmini (@gastonyelmini)
- Jake Ferrero (@JakeFerrero)
- Nick Thompson (@Nick-NCSU)
- INT-5867 Log fetch org public access prevention policy errors #561 (@JakeFerrero)
- feat(INT-5754): modernize fetch cloud functions test #557 ([email protected])
- Refactor storage bucket constants #556 ([email protected])
- Gaston Yelmini (@gastonyelmini)
- Jake Ferrero (@JakeFerrero)
- feat(INT-5917): add cloud function storage bucket relationship #554 ([email protected])
- Update fetch-depth for Auto #555 (@Nick-NCSU)
- Gaston Yelmini (@gastonyelmini)
- Nick Thompson (@Nick-NCSU)
- feat(INT-5918): add cloud function source repo relationship #553 ([email protected])
- Emily Dreyer (@edreyer1)
- Gaston Yelmini (@gastonyelmini)
- Account for non-deterministic basic role permissions #551 (@ndowmon @philidem)
- Int 5556 dev tools 8.24.1 #548 (@edreyer1)
- INT-5579 Decouple
iterateApi
intoforEachPage
andwithErrorHandling
#546 (@i5o) - Fix build spec properties #549 (@ndowmon)
- Remove checkout code from old versioning method #543 (@Nick-NCSU)
- Nick Thompson (@Nick-NCSU)
- Add step: build-cloud-build-trigger-uses-github-repo-relationships #542 (@i5o)
- INT-5289 step: build-cloud-build-uses-source-repo-relationships #541 (@i5o)
- Ignacio Rodríguez (@i5o)
- Add auto versioning #529 (@Nick-NCSU)
- INT-4507 - Add
users
property to compute address entities #535 (@austinkelleher)
- Austin Kelleher (@austinkelleher)
- Nick Thompson (@Nick-NCSU)
- Support the following new entities:
google_cloud_build_trigger
- Support for new GCP compute regions
- Support optional
config.useEnablementsForStepStartStates
to call listEnablements API before attempting to make API calls for all services - Support the following new entities:
google_cloud_secret
google_cloud_secret_version
google_cloud_build
-
Do not throw if bigquery API returns
The project ${config.projectId} has not enabled BigQuery.
-
Rely on the individual steps to call service APIs instead of pre-calculating which service APIs are enabled in
getStepStartStates
. This should help drastically reduce the number of API calls toserviceusage.googleapis.com
. -
Change KMS key ring client request code to iterate hardcoded list of project locations instead of hitting the KMS project location API. The KMS project location API was being hammered and could cause API quota issues.
- Split service API to role relationship creation into separate step. If collecting service API data fails, we should still ingest custom IAM roles.
- Fixed user messaging about optional
orgpolicy.policy.get
permission
- Changed the
fetch-api-services
step to only fetch enabled services. This lowers the number of service requests made by approximately 40 times.
-
SQL entities (
google_sql_mysql_instance
,google_sql_postgres_instance
andgoogle_sql_sql_server_instance
) now have the following new properties:Property Type ipAddresses
string[]
primaryIpAddresses
string[]
privateIpAddresses
string[]
outgoingIpAddresses
string[]
-
Fix incorrect managed question query
Ensure that IAM users are not assigned the Service Account User or Service Account Token Creator roles at project level
-
Fix managed question to use correct
_type
queryEnsure that IAM users are not assigned the Service Account User or Service Account Token Creator roles at project level
The managed question
good
query is using the correct_type
, while thebad
query is not. Both queries should be usinggoogle_user
instead ofgoogle_iam_service_account
.Additionally, both
good
andbad
queries have been optimized to useWITH
query filters instead ofWHERE
, sinceWITH
performs post-traversal filtering.
-
Added new managed question
Which Google Cloud Functions have runtime that are deprecated?
- Fix CIS Google Cloud Foundations requirement 1.6 managed question
- Added additional questions for service account permissions.
- Fixed question mappings to CIS Google Cloud Foundations 1.1.
- Check for the existence of app engine application in
fetch-app-engine-services
to better handle app engine services not found issue.
-
Added additional (totalRequestsMade, totalResourcesReturned, maximumResourcesPerPage) logging to
cloudkms.googleapis.com
andserviceusage.googleapis.com
endpoints. -
Increased
cloudkms.keyRings.list
page size from default -> 200
-
Calculate correct value of
blockProjectSSHKeys
Properly calcualte the value of
blockProjectSSHKeys
ongoogle_compute_instance
entities. According to the GCP documentation,block-project-ssh-keys
generally has the valueTRUE
instead oftrue
. The new implementation considers both cases.For more information, see: https://cloud.google.com/compute/docs/connect/restrict-ssh-keys#during-vm-creation
Additionally, the logic that was considering compute instances that have names beginning with
gke-
has been removed. We should maintain the original value of the compute metadata on thegoogle_compute_instance
entity and let the managed question handle the CIS benchmark logic.
- Increase
serviceusage.services.list
page size from 50 -> 200
- Update retry
maxAttempts: 6
inwithErrorHandling
, increasing the total retry time from 40s -> 90s
- Set
retry: false
on all clients, reducing retried API calls by a factor of 4 - Update retry
maxAttempts: 5
inwithErrorHandling
, reducing retried API calls by a factor of 2
- Bumped
@jupiterone/integration-sdk-*@8.6.3
- Started retrying 500 errors
-
Decoupled
fetch-compute-region-disks
step from kms keys dependencies. This allows the Region Disks step to execute successfully even if kms keys steps are disabled. -
Decoupled
fetch-memcache-instances
step from compute network dependencies. This allows the Memcache Instances step to execute successfully even if compute network steps are disabled. -
Decoupled
fetch-dataproc-clusters
step from kms keys dependencies. This allows the Compute Dataproc Clusters step to execute successfully even if kms keys steps are disabled. -
Decoupled `fetch-pubsub-topics' step from kms keys dependencies. This allows the PubSub Topics step to execute successfully even if kms keys steps are disabled.
-
Decoupled
fetch-redis-instances
step from compute network dependencies. This allows the Redis Instances step to execute successfully even if compute network steps are disabled. -
Decoupled
fetch-app-engine-application
step from storage dependencies. This allows the App Engine Applications step to execute successfully even if storage steps are disabled. -
Decoupled
fetch-compute-backend-buckets
step from storage dependencies. This allows the Compute Backend Buckets step to execute successfully even if storage steps are disabled. -
Decoupled
fetch-private-ca-certificate-authorities
step from storage dependencies. This allows the CA Certificate Authorities step to execute successfully even if storage steps are disabled. -
Decoupled
fetch-compute-images
step from kms keys dependencies. This allows the Compute Images step to execute successfully even if kms keys steps are disabled. -
Decoupled
fetch-logging-project-sinks
step from storage dependencies. This allows the Logging Project Sinks step to execute successfully even if storage steps are disabled.
-
Kubernetes clusters' and their node pools' labels/tags are now ingested. The
google_container_cluster
now has the following new properties:Property Type metadata.description
string
metadata.labels.*
string
The
google_container_node_pool
now has the following new properties:Property Type metadata.gce.*
string
metadata.labels.*
string
metadata.networkTags
string[]
- Decoupled
fetch-sql-admin-instances
step from key vault dependencies. This allows the SQL admin step to execute successfully even if key vault steps are disabled.
- Bucket property
public
is now affected by the organization policy storage.publicAccessPrevention constraint.
- New optional parameter FOLDER_ID to allow restricting data ingestion to a single folder and its children. If omitted, ingestion will still occur at the organizational level.
- Update
@jupiterone/integration-sdk-*
packages.
-
New properties added to entities:
Entity Properties google_iam_service_account
active
- Properly assign
_key
value to placeholder deletedgoogle_compute_image
entities
_key
s are now generated properly to allow for mappinggoogle_iam_binding
s togoogle_bigquery_table
s when makinggoogle_iam_binding_allows_resource
relationships.
-
New properties added to relationships:
Relationship Properties google_iam_binding_assigned_cloud_authenticated_users
projectName
google_iam_binding_assigned_domain
projectName
google_iam_binding_assigned_everyone
projectName
google_iam_binding_assigned_group
projectName
google_iam_binding_assigned_iam_role
projectName
google_iam_binding_assigned_iam_service_account
projectName
google_iam_binding_assigned_user
projectName
- When making
google_iam_binding_allows_resource
relationships, we no longer check the if a service is enabled when determining if the relationship should be mapped or direct. This is because for non-organization integration instances, the Resource Manager API does not need to be enabled to ingest agoogle_cloud_project
.
- Metadata indexing of
google_iam_binding
relationships.
rawData
will now be stored forgoogle_iam_binding
s.
-
Properties were removed from resources:
Entity Properties google_cloud_folder
projectId
google_cloud_organization
projectId
,folders
folder level google_iam_binding
projectId
org level google_iam_binding
projectId
,folders
- When determining which project's
google_iam_binding
s to ingest, if aprojectId
is not specified in the config, the service account'sprojectId
should be used instead.
-
New properties added to resources:
Entity Properties google_storage_bucket
versioningEnabled
google_iam_binding_allows_resource
mapped relationships will now be created with anALLOWS
class instead ofHAS
.
-
Added support for ingesting the following new relationships:
Source class Target google_cloud_audit_config
ALLOWS google_iam_service_account
google_cloud_audit_config
ALLOWS google_user
google_cloud_audit_config
ALLOWS google_domain
google_cloud_audit_config
ALLOWS google_group
- Steps that ingest
google_iam_binding
s andgoogle_iam_role
s (fetch-iam-bindings
,create-basic-roles
,create-binding-principal-relationships
,create-binding-role-relationships
,create-binding-any-resource-relationships
,create-api-service-any-resource-relationships
,fetch-iam-custom-roles
, andfetch-iam-managed-roles
) are now enabled and disabled based exclusively on the Service API enablement of the Google Cloud Project that the service account is located in. Previously, these steps were enabled the same as all other steps; based on the intersection for the API enablement of the Google Cloud Project that the service account is located in, and the Google Cloud Project that is being ingested in that integration.
createStepStartStateWhereAllServicesMustBeEnabled
method to allow specifying that a step requires more than one API to be enabled to run.
- Only enable
google_iam_binding
steps if both theiam.googleapis.com
api and thecloudasset.googleapis.com
api is enabled.
- Only enable
google_iam_binding
steps if theiam.googleapis.com
service is enabled as thepermissions
property requiresgoogle_iam_role
s to have been ingested already.
- When making mapped
google_iam_binding_allows_resource
andgoogle_cloud_api_service_has_resource
relationships togoogle_sql_postgres_instance
,google_sql_sql_server_instance
, andgoogle_sql_mysql_instance
. Only map on the_key
property and not the_type
. - Only attempt to fetch project level IAM Policies if there is a project defined in the integration config.
-
Breaking: The
permissions
property ongoogle_iam_binding
s andgoogle_iam_role
s will now be structured:permissions: [ 'storage.read', 'storage.write' 'storage.objects.read', 'storage.objects.delete', ... ],
instead of:
permissions: 'storage.read,storage.write,storage.objects.read,storage.objects.delete,...'
This was needed in order to avoid the 4096 characters property truncation limit imposed in v1.1.0. To maintain functionality, querys for permissions will need to change from:
Find google_iam_role with permissions~='storage.objects.admin'
to
Find google_iam_role with permissions='storage.objects.admin'
- Every integration instance with a
projectId
will ingest Project Levelgoogle_iam_bindings
in the Cloud Asset steps. Previously, the Master Integration Instance was ingesting allgoogle_iam_bindings
for the entire organization. This spreads upload loads amongst more integration instances.
- Relationships whose
_type
follows the pattern of:
Type |
---|
google_iam_binding_allows_cloud_organization |
google_iam_binding_allows_kms_key_ring |
google_iam_binding_allows_cloud_function |
... |
Will now have a type of google_iam_binding_allows_resource
- Relationships whose
_type
follows the pattern of:
Type |
---|
google_cloud_api_service_has_storage_bucket |
google_cloud_api_service_has_bigquery_dataset |
google_cloud_api_service_has_kms_crypto_key |
... |
Will now have a type of google_cloud_api_service_has_resource
-
Added support for ingesting the following new resources:
Service Resource / Entity Audit Config google_cloud_audit_config
-
Added support for ingesting the following new relationships:
Source class Target google_cloud_api_service
USES google_cloud_audit_config
-
A test to ensure
GOOGLE_RESOURCE_KIND_TO_J1_TYPE_MAP
andJ1_TYPE_TO_KEY_GENERATOR_MAP
are kept up-to-date with new entitiy ingestion.
- Updated
_key
ofgoogle_container_cluster
to have a predictable mapping key
- Only run
organizationSteps
if you are the Master Integration Instance for an organization. These steps will no longer be run on instances that were automatically generated via the "Configure Organization Projects" configuration variable.
- The logic for determining if an integration instance is ingesting only a single non-auto-generated Google Cloud project was corrected. This means that auto-configured integraiton instances will not run Cloud Asset steps and Cloud Billing steps. Only the Master Integration Instance will run those steps.
- Document every relationship type individually in the step metadata for
google_iam_binding_allows_ANY_RESOURCE
andgoogle_cloud_api_service_has_ANY_RESOURCE
relationships
- The config variable
markBindingStepsAsPartial
that allows for disabling binding steps.
- The
permissions
property ongoogle_iam_binding
s andgoogle_iam_role
s will now be truncated to 4096 characters. This means that queries forpermissions
on these entities might return false negitive results for large permission sets.
- Do not index relationships created in the
cloud-asset
steps to prevent out of memory errors.
-
Added support for ingesting the following new resources:
Service Resource / Entity Audit Config google_cloud_audit_config
-
Added support for ingesting the following new relationships:
Source class Target google_cloud_api_service
USES google_cloud_audit_config
-
API calls will now have a
timeout
of one minute. -
Organization setup will now have an api
timeout
of five minutes when updating the organization IAM policy.
- TypeError from when
CREATE_IAM_ENTITY_MAP
did not contain an entity creation function. - TypeError from when there is no condition in
fetch-logging-metrics
rawData
on Basicgoogle_iam_role
s andgoogle_iam_bindings
to prevent upload errors.
- Only store the first 500 members in the rawData for
google_iam_binding
s to prevent upload error. - Only store the first 500 permissions in the rawData for
google_iam_role
s to prevent upload error. - Only store the first 500 characters of the role description in the rawData for
google_iam_role
s to prevent upload error. - Prevent
DUPLICATE_KEY_ERROR
s in stepscreate-binding-principal-relationships
andcreate-binding-any-resource-relationships
.
- Prevent an error in
getTablePolicy
from causingfetch-big-query-tables
to error out.
- Managed questions that used
Find google_user ASSIGNED google_iam_role
traversals to useFind google_user that ASSIGNED google_iam_binding that USES google_iam_role
instead.
- Basic
google_iam_roles
will now properly set thepermissions
property.
- Breaking Relationships between
google_iam_role
s and principal members. These traversals will now need to go through thegoogle_iam_binding
first. Ex:Find google_user ASSIGNED google_iam_role
will need to change to beFind google_user that ASSIGNED google_iam_binding that USES google_iam_role
. This is done because in Google Cloud IAM, a principal is not directly assigned a role, they are only assigned a role for a specific reasource via an IAM Binding.
Source | class | Target |
---|---|---|
google_user |
ASSIGNED | google_iam_role |
google_group |
ASSIGNED | google_iam_role |
google_domain |
ASSIGNED | google_iam_role |
everyone |
ASSIGNED | google_iam_role |
google_cloud_authenticated_users |
ASSIGNED | google_iam_role |
google_iam_service_account |
ASSIGNED | google_iam_role |
- Breaking Step
fetch-resource-manager-iam-policy
was removed. IAM Policy analysis for projects will now be done in thefetch-iam-bindings
step, which requires the Cloud Asset API to be enabled. In order to continue having the project level IAM Policy analyzed, ensure your gcloud account hascloudasset.googleapis.com
enabled (instructions here)
google_iam_binding
's_key
property will now contain thecondition
property of the binding in order to ensure all conditions are properly captured in binding entities.- New
google_iam_role
s forgoogle_cloud_project
s,google_cloud_folder
s, andgoogle_cloud_organization
s will get created for each Google Cloud Basic Role (roles/editor
,roles/owner
, ...) that is attached via a role binding, instead of having a singlegoogle_iam_role
that all relate to. - Step
fetch-iam-bindings
will fetch IAM Policies using the project scope when triggered by an integration without anorganizationId
in its integrationConfig.
- Create relationships for every member of
google_iam_binding
s. - Added support for ingesting the following new relationships:
Source | class | Target |
---|---|---|
google_iam_binding |
ASSIGNED |
google_cloud_authenticated_users |
google_iam_binding |
ASSIGNED |
everyone |
google_iam_binding |
ASSIGNED |
google_iam_role |
everyone |
ASSIGNED |
google_iam_role |
google_cloud_authenticated_users |
ASSIGNED |
google_iam_role |
google_cloud_api_service |
HAS |
ANY_RESOURCE |
-
New properties added to resources:
Entity Properties google_iam_binding
permissions
google_iam_binding
organization
google_iam_binding
folders
google_cloud_folder
parent
(mapped) google_user
emailDomain
-
Custom
google_iam_roles
will be ingested from the Organization level as well as the Project level.
- Mapped relationships were not getting between
google_iam_bindings
and principals.
- Removed unnecessary "UNABLE_TO_FIND_PROJECT_ID" error.
- Initial managed JupiterOne questions moved into this project
Internet
ALLOWSgoogle_compute_firewall
relationship for0.0.0.0/0
/::/0
source CIDR blocks restored by adding_type
to the target filter keys.
-
New properties added to resources:
Entity Properties google_bigquery_table
kmsKeyName
google_sql_sql_server_instance
userOptions
-
Added support for ingesting the following new resources:
Service Resource / Entity Dataproc google_dataproc_cluster
Cloud Billing google_billing_account
N/A google_billing_budget
Cloud Bigtable google_bigtable_app_profile
,google_bigtable_backup
,google_bigtable_cluster
,google_bigtable_instance
,google_bigtable_table
-
Added support for ingesting the following new relationships:
Source class Target google_dataproc_cluster
USES
google_kms_crypto_key
google_dataproc_cluster
USES
google_compute_image
google_dataproc_cluster
USES
google_storage_bucket
google_billing_account
HAS
google_billing_budget
google_cloud_project
USES
google_billing_budget
google_bigtable_cluster
HAS
google_bigtable_backup
google_bigtable_cluster
USES
google_kms_crypto_key
google_bigtable_instance
HAS
google_bigtable_app_profile
google_bigtable_instance
HAS
google_bigtable_cluster
google_bigtable_instance
HAS
google_bigtable_table
google_bigtable_table
HAS
google_bigtable_backup
-
Added support for ingesting the following new relationships:
Source class Target google_bigquery_dataset
USES
google_kms_crypto_key
google_compute_disk
USES
google_kms_crypto_key
google_compute_image
USES
google_kms_crypto_key
google_pubsub_topic
USES
google_kms_crypto_key
google_spanner_database
USES
google_kms_crypto_key
google_sql_mysql_instance
USES
google_kms_crypto_key
google_sql_postgres_instance
USES
google_kms_crypto_key
google_sql_sql_server_instance
USES
google_kms_crypto_key
-
New properties added to resources:
Entity Properties google_sql_postgres_instance
logMinMessages
google_sql_sql_server_instance
externalScriptsEnabled
google_sql_sql_server_instance
userConnections
google_sql_sql_server_instance
remoteAccess
google_sql_sql_server_instance
traceFlag
-
Added support for ingesting the following new resources:
Service Resource / Entity DNS Policy google_dns_policy
-
Added support for ingesting the following new relationships:
Source class Target google_compute_network
HAS google_dns_policy
-
Relationships from
google_cloud_organization
s andgoogle_cloud_folder
s togoogle_cloud_project
s will also be made for deleted projects as well. -
the following mapped relationships to skip target creation:
Source class Target google_iam_binding
ALLOWS ANY_RESOURCE
google_iam_binding
ASSIGNED google_group
google_iam_binding
ASSIGNED google_iam_service_account
google_iam_binding
ASSIGNED google_user
google_iam_binding
ASSIGNED google_domain
google_user
CREATED google_app_engine_version
-
New properties added to resources:
Entity Properties google_storage_bucket
isSubjectToObjectAcls
google_iam_binding
readonly
- The property
public
ongoogle_storage_bucket
to betrue
when the storage bucket does not have Uniform Bucket Access Level enabled. We can not determine if the bucket is public or not when this setting is not enabled.
-
Managed
google_iam_roles
now have apermissions
property, similar to customgoogle_iam_roles
. -
Allow BigQuery data to be ingested independently of KMS key data
-
Changed
google_iam_bindings.permissions: string[]
togoogle_iam_bindings.permissions: string
due to limitations onstring[]
property lengths in JupiterOne. Queries will need to be changed frompermissions={{string}}
topermissions~={{string}}
to maintain functionality -
Add logging around Google Cloud configuration and step enablement
- Add 429 status code to existing retry logic
-
Added support for ingesting the following new relationships:
Source class Target google_iam_binding
ALLOWS google_cloud_projects
google_iam_binding
ALLOWS google_sql_mysql_instance
google_iam_binding
ALLOWS google_sql_postgres_instance
google_iam_binding
ALLOWS google_sql_sql_server_instance
google_iam_binding
ASSIGNED google_domain
google_iam_binding
ALLOWSANY_RESOURCE
relationships to work for all ingested resources
- Retry API calls on "Quota exceeded" errors
- Upgraded integration SDK packages to v6.13.0
- Encode path part of
webLink
entity property
-
Added support for ingesting the following new relationships:
Source class Target google_iam_binding
ALLOWS ANY_RESOURCE
- Step that fetches App Engine Applications should not fail when
appengine.apps.get
responds with a404
- Step that fetches resource manager project should not fail when project cannot be fetched
-
Added support for ingesting the following new relationships:
Source class Target google_iam_binding
ASSIGNED google_group
google_iam_binding
ASSIGNED google_iam_service_account
google_iam_binding
ASSIGNED google_user
google_iam_binding
USES google_iam_role
- Handle case when global
google_compute_image
has been removed from Google Cloud and results in a 404 status code when attempting to fetch
- #255 - Ensure
that
google_redis_instance
andgoogle_memcache_instance
use unique_key
values
- #243 - Always
assign boolean value to
public
property ongoogle_storage_bucket
- Refactor multiple steps to build relationships in a separate step
-
New properties added to resources:
Entity Properties google_compute_instance
serviceAccountEmails
-
New properties added to resources:
Entity Properties google_cloud_function
serviceAccountEmail
- #248 - Always execute steps in org child projects even if child project has service disabled
-
Added support for ingesting the following new relationships:
Source _class Target google_compute_network
CONNECTS
google_compute_network
- Log step start states
- #239 -
google_iam_role
should assign the actual target projectprojectId
instead of the org project
- #237 - Prevent
duplicate
google_iam_binding
_key
values
- Improve job log event to print whether organization project configuration is enabled
- Disable organization steps using both
configurationOrganizationProjects
config value and whether the service API is enabled
-
Added support for ingesting the following new resources:
Service Resource / Entity Access Context Manager google_access_context_manager_access_policy
,google_access_context_manager_access_level
,google_access_context_manager_service_perimeter
,google_access_context_manager_service_perimeter_egress_policy
,google_access_context_manager_service_perimeter_ingress_policy
,google_access_context_manager_service_perimeter_api_operation
,google_access_context_manager_service_perimeter_method_selector
-
Added support for ingesting the following new relationships:
Source _class Target google_access_context_manager_access_policy
HAS
google_access_context_manager_access_level
google_access_context_manager_access_policy
HAS
google_access_context_manager_service_perimeter
google_access_context_manager_service_perimeter
HAS
google_access_context_manager_service_perimeter_egress_policy
google_access_context_manager_service_perimeter
HAS
google_access_context_manager_service_perimeter_ingress_policy
google_access_context_manager_service_perimeter_egress_policy
HAS
google_access_context_manager_service_perimeter_api_operation
google_access_context_manager_service_perimeter_ingress_policy
HAS
google_access_context_manager_service_perimeter_api_operation
google_access_context_manager_service_perimeter_api_operation
HAS
google_access_context_manager_service_perimeter_method_selector
google_access_context_manager_service_perimeter
PROTECTS
google_cloud_project
google_access_context_manager_service_perimeter
PROTECTS
google_cloud_api_service
- Only run
fetch-iam-bindings
step whenconfigureOrganizationProjects
is enabled
- Additional error logging
- Publish job log event that prints the service account email in use
- Publish message when missing
cloudasset.assets.searchAllIamPolicies
permission
-
Added support for ingesting the following new resources:
Service Resource / Entity IAM Binding google_iam_binding
- Use the actual
google_cloud_organization
displayName
property for the display name instead of the organizationname
property
- Do not upload
_rawData
for mapped relationship target entities
- Rename
configureOrganizationAccounts
integration config property toconfigureOrganizationProjects
-
Added support for ingesting the following new resources:
Service Resource / Entity BigQuery google_bigquery_model
-
Added support for ingesting the following new relationships:
Source _class Target google_bigquery_dataset
HAS
google_bigquery_model
-
New properties added to resources:
Entity Properties google_cloud_project
id
,projectId
,webLink
google_api_gateway_api
function
google_app_engine_version
function
google_cloud_run_service
function
google_compute_health_check
function
google_compute_backend_service
function
google_privateca_certificate_authority
function
google_pubsub_subscription
function
google_cloud_api_service
function
-
Added support for ingesting the following new resources:
Service Resource / Entity Cloud Resource Manager google_cloud_folder
-
Added support for ingesting the following new relationships:
Source _class Target google_cloud_organization
HAS
google_cloud_folder
google_cloud_folder
HAS
google_cloud_folder
google_cloud_organization
HAS
google_cloud_project
google_cloud_folder
HAS
google_cloud_project
- #208 -
Incorrect
projectId
property being applied to entities whenprojectId
is supplied in integration config
-
Support for ingesting the following new entities
- Google Cloud
google_cloud_organization
- Google Cloud
- #171 - Suppress errors when App Engine application is not found
- Proper step enablement support when both a "main" and "target" Google Cloud projects are supplied
- Additional integration config fields
configureOrganizationProjects
,organizationId
, andprojectId
-
Exported
IntegrationConfig
,deserializeIntegrationConfig
andClient
from the package -
Upgraded packages
-
Support for ingesting the following new entities
- BigQuery
google_bigquery_table
- BigQuery
-
Support for ingesting the following new relationships
- BigQuery
google_bigquery_dataset
HASgoogle_bigquery_table
google_bigquery_dataset
USESgoogle_kms_crypto_key
- BigQuery
-
Support for
--integration-polling-interval
in thejupiterone-organization-setup
CLI
-
Add
Database
class togoogle_bigquery_dataset
-
#186 - Accept
storage-api.googleapis.com
andstorage-component.googleapis.com
services to enable buckets step
- #175 - Add
projectId
property to all entities
- Upgraded integration SDK packages to v6.2.0
-
New properties added to resources:
google_compute_disk
kmsKeyServiceAccount
kmsKeyName
google_sql_mysql_instance
kmsKeyName
google_sql_postgres_instance
kmsKeyName
google_sql_sql_server_instance
kmsKeyName
google_storage_bucket
kmsKeyName
-
New relationships
-
Compute
google_compute_disk
USESgoogle_kms_crypto_key
-
SQL Admin
google_sql_mysql_instance
USESgoogle_kms_crypto_key
google_sql_postgres_instance
USESgoogle_kms_crypto_key
google_sql_sql_server_instance
USESgoogle_kms_crypto_key
-
- #171 - Do not fail when App Engine applications and versions cannot be fetched
-
New properties added to resources:
google_compute_instance
integrityMonitoringEnabled
secureBootEnabled
vtpmEnabled
connectedNetworksCount
- Upgrade all packages
-
Improved logic that determines whether a
google_compute_instance
is a shielded VM or not by considering whether vTPM is enabled -
#151 - Fix duplicate
_key
on Cloud Run resources -
#158 - Do not fail when App Engine services cannot be fetched
-
#152 - Publish job log message when
compute.images.get
permission is missing -
#153 - Handle disks that do not have an image assigned (blank disks)
-
New properties added to resources:
google_compute_instance
webLink
google_compute_disk
webLink
-
#140 - Map more IAM permissions to service APIs, which will generate additional
google_cloud_api_service
HASgoogle_iam_role
relationships -
Add permissions property to managed
google_iam_role
entities
-
Support for ingesting the following new resources
- Compute
google_compute_image
- Compute
-
Support for ingesting the following new relationships
- IAM
google_group
ASSIGNEDgoogle_iam_role
- API Service
google_cloud_api_service
HASgoogle_iam_role
- IAM
-
New properties added to resources:
google_cloud_api_service
hasIamPermissions
google_iam_role
readonly
google_user
is now created as a target entity through a mapped relationship
- Fixes #126 Buckets should still be ingested if the bucket policy cannot be fetched
- New properties added to resources:
google_compute_instance
hostname
- Fixes #111
- Fixes #116
Publish integration job log event when fetching alert monitoring policies
fails due to
project/{PROJECT_ID} is not a workspace
- Fixes #119 Throw error when policy could not be fetched
- Raise
project/{PROJECT_ID} is not a workspace
error message when attempting to fetch alert monitoring policies
- Fixed #107 - Publish unprocessed buckets message to integration job log when a bucket is configured with "requestor pays"
- Upgrade integration SDK packages
- Upgraded
googleapis
package
- Fix
memoryUsage
anddiskUsageBytes
App Engine properties havingNaN
values
-
Support for ingesting the following new resources
- Certificate Authority
google_privateca_certificate_authority
google_privateca_certificate
- Certificate Authority
- Upgraded
googleapis
package
- Remove ingestion of raw data from
google_compute_instance
as it can contain a significant amount of data
-
Support for ingesting the following new resources
-
New relationships
- Cloud Functions
google_cloud_function
USESgoogle_iam_service_account
- Cloud Functions
-
Support for ingesting the following new resources
-
API Gateway
google_api_gateway_api
google_api_gateway_api_config
google_api_gateway_gateway
-
Spanner
google_spanner_instance
google_spanner_instance_database
google_spanner_instance_config
-
- Upgraded all packages
-
Support for ingesting the following new resources
- Redis
google_redis_instance
- Memcache
google_memcache_instance
google_memcache_instance_node
- Redis
-
Support for ingesting the following new resources
-
Pub/Sub
google_pubsub_topic
google_pubsub_subscription
-
App Engine Admin
google_app_engine_application
google_app_engine_service
google_app_engine_version
google_app_engine_instance
-
Cloud Run
google_cloud_run_service
google_cloud_run_configuration
google_cloud_run_route
-
- Upgraded all packages
- Add a
tag.
property to every entity for each label in the Google Cloudlabels
property. For example, if agoogle_storage_bucket
has alabels
property that has the value:
{
"myLabel": "myLabelVal",
"myOtherLabel": "myOtherLabelValue"
}
The following individual tags will be copied onto the entity: tag.myLabel
,
tag.myOtherLabel
- Support for ingesting the following new resources
- Entities
google_compute_instance_group_named_port
- Relationships
- Compute
google_compute_instance_group
HASgoogle_compute_instance_group_named_port
- Compute
- Entities
- New properties added to resources:
google_compute_instance_group
webLink
-
Support for ingesting the following new resources
-
New relationships
- GKE
google_container_node_pool
HASgoogle_compute_instance_group
- GKE
-
New properties added to resources:
- GKE
google_container_node_pool
serviceAccount
bootDiskKmsKey
google_container_cluster
workloadIdentity
- GKE
- Update integration SDK packages
- SDK package upgrades contained bug fixes for
jobState.getData
typings. Fixed usage in this project.
- Support for ingesting the following new resources
- GKE
google_container_node_pool
google_binary_authorization_policy
- GKE
-
Support for
--skip-project-id-regex
in thejupiterone-organization-setup
CLI -
Support for ingesting the following new resources
- Logging
google_logging_metric
google_logging_project_sink
google_monitoring_alert_policy
- Networking
google_compute_health_check
google_compute_instance_group
google_compute_url_map
google_compute_backend_service
google_compute_backend_bucket
google_compute_target_ssl_proxy
google_compute_target_https_proxy
google_compute_target_http_proxy
google_compute_ssl_policy
- GKE (Google Kubernetes Engine):
google_container_cluster
- Logging
-
New properties added to various existing resources:
- Storage
google_storage_bucket
retentionPolicyEnabled
retentionPeriod
retentionDate
google_kms_crypto_key
public
- Storage
- Log integration job event from the
fetch-compute-project
step when the service account used to execute the integration does not have thecompute.projects.get
permission.
-
Support for ingesting the following new resources
- Cloud SQL
google_cloud_sql_mysql_instance
google_cloud_sql_postgres_instance
google_cloud_sql_sql_server_instance
- BigQuery
google_cloud_big_query_dataset
- Compute
google_compute_project
- DNS
google_dns_managed_zone
- Cloud SQL
-
New properties added to various existing resources for CIS benchmarks:
- Compute
google_compute_disk
isCustomerSuppliedKeysEncrypted
google_compute_instance
usesDefaultServiceAccount
usesFullAccessDefaultServiceAccount
blockProjectSSHKeys
isSerialPortEnabled
isShieldedVM
publicIpAddress
privateIpAddress
isOSLoginEnabled
- Networking
google_compute_subnetwork
flowLogsEnabled
google_compute_network
IPv4Range
- KMS
google_kms_crypto_key
public
- Compute
-
Support for
--rotate-service-account-keys
in thejupiterone-organization-setup
CLI
- Retry concurrent policy modification error in
jupiterone-organization-setup
CLI - Various fixes to make
jupiterone-organization-setup
more idempotent
- Error handling for all api calls
- Billing configuration errors will be shown in the job log
- Upgrade integration SDK
devDependencies
- Upgrade all project
dependencies
anddevDependencies
- Improve job log messaging when
/v1/projects/{projectId}
request responds with 403:FORBIDDEN. Previously, the job log simply stated "The caller does not have permission".
- Add
roles/iam.roleViewer
as a required role in developer documentation. This role includes theresourcemanager.projects.get
permission, which is required to access the/v1/projects/{projectId}
endpoint. - Improve JupiterOne Google Cloud organization script to walk all folders in an organization.
Example usage:
yarn jupiterone-organization-setup \
--google-access-token $(gcloud auth print-access-token) \
--organization-id 1111111111 \
--jupiterone-account-id MY_JUPITERONE_ACCOUNT_ID_HERE \
--jupiterone-api-key MY_JUPITERONE_API_KEY_HERE
- Create script that allows JupiterOne integration instance creation for every Google Cloud project in an organization
- Fixed IAM service account
ASSIGNED
role relationship duplicates
- Upgrade SDK v4
- Always create an
Account
entity, even if API to/projects/<projectId>
fails
- #36 Ingestion of
new project resource
google_cloud_project
- New relationship
google_cloud_project
HASgoogle_cloud_api_service
- Expose boolean
public
property ongoogle_storage_bucket
that determines whether a storage bucket is public
Example JupiterOne query:
find google_storage_bucket with public=true
- #30 Ingestion of
new networking resources
google_compute_firewall
google_compute_network
google_compute_subnetwork
- #31 Ingestion of
new KMS resources
google_kms_key_ring
google_kms_crypto_key
- New relationships
google_compute_firewall
PROTECTSgoogle_compute_network
google_compute_network
CONTAINSgoogle_compute_subnetwork
google_compute_network
HASgoogle_compute_firewall
google_compute_subnetwork
HASgoogle_compute_instance
Internet
ALLOWSgoogle_compute_firewall
Internet
DENIESgoogle_compute_firewall
Host
ALLOWSgoogle_compute_firewall
Host
DENIESgoogle_compute_firewall
Network
ALLOWSgoogle_compute_firewall
Network
DENIESgoogle_compute_firewall
google_kms_key_ring
HASgoogle_kms_crypto_key
- Duplicate
_key
detected error happened when the Google Cloudserviceusage.services.list
API returned a duplicate API service intermittently.
- Fixed
ComputeInstanceTrustsServiceAccount
relationship which allowed array relationships.
- Build relationship between
google_compute_instance
andgoogle_iam_service_account
- Update to SDK v3.0.0
- Fixed potential for DUPLICATE_KEY_ERROR in
fetchResourceManagerIamPolicy
- Ingest Google Compute disks as
google_compute_disk
- Ingest Google Compute instances as
google_compute_instance
- Create
google_compute_instance
USES
google_compute_disk
relationship - Upgrade JupiterOne SDK packages
- Ingest IAM roles as
google_iam_role
- Ingest IAM service accounts as
google_iam_service_account
- Ingest IAM service account keys as
google_iam_service_account_key
and buildHAS
relationship betweengoogle_iam_service_account
andgoogle_iam_service_account_key
. - Ingest
google_user
- Build
ASSIGNED
relationship betweengoogle_user
andgoogle_iam_role
- Fixes #10 - Build
ASSIGNED
relationship betweengoogle_iam_service_account
andgoogle_iam_role
- Fixes #11 - Update all existing entity keys to not include the
_type
prefix - Fixes #31 - Make
_type
naming convention consistent with G Suite integration forgoogle_user
and the rest with Google Cloud Terraform provider.
- Generate
.env
file using thecreate-env-file
script
Example:
yarn create-env-file ~/SERVICE_ACCOUNT_FILE_PATH_HERE.json
- Update Google Cloud integration config to store entire service account key file contents instead of subset of properties
- Initial
@jupiterone/graph-google-cloud
release. - Ingestion of
google_cloud_function
- Ingestion of
google_storage_bucket
- Ingestion of
google_cloud_api_service
- Integration setup documentation