Information
In order to prevent unnecessary project ownership assignments to users/service-accounts and further misuses of projects and resources, all roles/Owner assignments should be monitored.
Members (users/Service-Accounts) with a role assignment to primitive role roles/Owner are project owners.
The project owner has all the privileges on the project the role belongs to. These are summarized below:
- All viewer permissions on all GCP Services within the project
- Permissions for actions that modify the state of all GCP services within the project
- Manage roles and permissions for a project and all resources within the project
- Set up billing for a project
Granting the owner role to a member (user/Service-Account) will allow that member to modify the Identity and Access Management (IAM) policy. Therefore, grant the owner role only if the member has a legitimate purpose to manage the IAM policy. This is because the project IAM policy contains sensitive access control data. Having a minimal set of users allowed to manage IAM policy will simplify any auditing that may be necessary.
Project ownership has the highest level of privileges on a project. To avoid misuse of project resources, the project ownership assignment/change actions mentioned above should be monitored and alerted to concerned recipients.
- Sending project ownership invites
- Acceptance/Rejection of project ownership invite by user
- Adding role\\Owner to a user/service-account
- Removing a user/Service account from role\\Owner
NOTE: Nessus has provided the target output to assist in reviewing the benchmark to ensure target compliance.
Solution
From Google Cloud Console
Create the prescribed log metric:
-
Go to Logging/Logs-based Metrics by visiting https://console.cloud.google.com/logs/metrics and click "CREATE METRIC".
-
Click the down arrow symbol on the Filter Bar at the rightmost corner and select Convert to Advanced Filter
-
Clear any text and add:
(protoPayload.serviceName="cloudresourcemanager.googleapis.com")
AND (ProjectOwnership OR projectOwnerInvitee)
OR (protoPayload.serviceData.policyDelta.bindingDeltas.action="REMOVE"
AND protoPayload.serviceData.policyDelta.bindingDeltas.role="roles/owner")
OR (protoPayload.serviceData.policyDelta.bindingDeltas.action="ADD"
AND protoPayload.serviceData.policyDelta.bindingDeltas.role="roles/owner") <xhtml:ol start="4"> -
Click Submit Filter The logs display based on the filter text entered by the user.
-
In the Metric Editor menu on the right, fill out the name field. Set Units to 1 (default) and the Type to Counter This ensures that the log metric counts the number of log entries matching the advanced logs query.
-
Click Create Metric
Create the display prescribed Alert Policy:
-
Identify the newly created metric under the section User-defined Metrics at https://console.cloud.google.com/logs/metrics .
-
Click the 3-dot icon in the rightmost column for the desired metric and select Create alert from Metric A new page opens.
-
Fill out the alert policy configuration and click Save Choose the alerting threshold and configuration that makes sense for the user's organization. For example, a threshold of zero(0) for the most recent value will ensure that a notification is triggered for every owner change in the project:
Set `Aggregator` to `Count`
Set `Configuration`:
- Condition: above
- Threshold: 0
- For: most recent value <xhtml:ol start="4"> -
Configure the desired notifications channels in the section Notifications
-
Name the policy and click Save
From Google Cloud CLI
Create a prescribed Log Metric:
- Use the command: gcloud beta logging metrics create
- Reference for Command Usage: https://cloud.google.com/sdk/gcloud/reference/beta/logging/metrics/create
Create prescribed Alert Policy
- Use the command: gcloud alpha monitoring policies create
- Reference for Command Usage: https://cloud.google.com/sdk/gcloud/reference/alpha/monitoring/policies/create
Impact:
Enabling of logging may result in your project being charged for the additional logs usage.