Identity Platform CI/CD Auditlog Pipeline
Not Live Yet
You are viewing a preview of documentation for the future state of GitLab Identity v3 (mid 2024). See the Access Management Policy for the GitLab Identity v2 current state with baseline entitlements and access requests. See the roadmap in the epics gantt chart.Pipeline Overview
graph LR
subgraph accessctl GitLab Repositories
direction LR
subgraph accessctl-policies Repo
direction TB
REPO_INV_POLICIES_ROLES[("policies/role/{kingdom}.yml")]
REPO_INV_POLICIES_OU[("policies/ou/{kingdom}.yml")]
end
subgraph accessctl-manifests Repo
direction TB
REPO_INV_MANIFESTS_USERS[("manifests/users/<br />users.yml/json/csv")]:::sky
REPO_INV_MANIFESTS_ATTRIBUTES[("manifests/attributes/<br />{attribute}.yml/json/csv")]:::sky
REPO_INV_MANIFESTS_ROLE[("manifests/roles/<br/>{role}.yml/json/csv")]:::sky
REPO_INV_MANIFESTS_OU[("manifests/ou/<br />{ou}.yml/json/csv")]:::sky
end
subgraph accessctl-auditlog Repo
direction TB
REPO_INV_CHANGELOG_USERS_ONBOARDING[("auditlog/users/<br />onboarding.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_USERS_OFFBOARDING[("auditlog/users/<br />offboarding.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_USERS_CHANGES[("auditlog/users/<br />attributes.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_ATTRIBUTE[("auditlog/attribute/<br />{attribute}.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_ROLE[("auditlog/role/<br />{role}.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_OU[("auditlog/ou/<br />{ou}.yml/json/csv")]:::emerald
end
end
subgraph accessctl GitLab CI/CD Pipeline Jobs
direction LR
subgraph Manifest Stage
direction LR
CI_MANIFEST_USER_JOB[["Stage 1.1<br />Users Job<br/>CLI manifest:users"]]
CI_MANIFEST_ROLE_JOB[["Stage 1.2<br />Roles Job<br />CLI manifest:roles"]]
CI_MANIFEST_GROUP_JOB[["Stage 1.3<br />Org Units Job<br/>CLI manifest:ou"]]
end
subgraph Auditlog Stage
direction LR
CI_CHANGELOG_USER_JOB[["Stage 2.1<br />Users Job<br/>CLI auditlog:users"]]:::orange
CI_CHANGELOG_ATTRIBUTE_JOB[["Stage 2.2<br />Attributes Job<br/>CLI auditlog:attributes"]]:::orange
CI_CHANGELOG_ROLE_JOB[["Stage 2.3<br />Roles Job<br/>CLI auditlog:roles"]]:::orange
CI_CHANGELOG_GROUP_JOB[["Stage 2.4<br />Org Units Job<br/>CLI auditlog:ou"]]:::orange
end
subgraph Provisioning Stage
direction LR
subgraph Okta API
CI_PROVISIONING_OKTA_USER_JOB["Stage 3.1<br />Okta Users Job<br />provision:okta-users"]
CI_PROVISIONING_OKTA_GROUP_JOB["Stage 3.2<br />Okta Groups Job<br />provision:okta-groups"]
end
subgraph Google Workspace Directory API
CI_PROVISIONING_GOOGLE_GROUP_JOB["Stage 3.3<br />Google Groups Job<br />provision:google-groups"]
end
subgraph GitLab.com SaaS API
CI_PROVISIONING_GITLAB_SAAS_GROUP_JOB["Stage 3.4<br />GitLab SaaS Groups Job<br />provision:gitlab-saas-groups"]
end
subgraph GitLab Self-Managed Instance API
CI_PROVISIONING_GITLAB_SELF_GROUP_JOB["Stage 3.5<br />GitLab Self-Managed Groups Job<br />provision:gitlab-self-groups"]
end
end
CI_MANIFEST_USER_JOB --> CI_MANIFEST_ROLE_JOB --> CI_MANIFEST_GROUP_JOB
CI_CHANGELOG_USER_JOB --> CI_CHANGELOG_ATTRIBUTE_JOB --> CI_CHANGELOG_ROLE_JOB --> CI_CHANGELOG_GROUP_JOB
CI_PROVISIONING_OKTA_USER_JOB --> CI_PROVISIONING_OKTA_GROUP_JOB --> CI_PROVISIONING_GOOGLE_GROUP_JOB --> CI_PROVISIONING_GITLAB_SAAS_GROUP_JOB --> CI_PROVISIONING_GITLAB_SELF_GROUP_JOB
click CI_MANIFEST_USER_JOB "/handbook/security/identity/platform/manifests" "View Details"
click CI_MANIFEST_ROLE_JOB "/handbook/security/identity/platform/manifests" "View Details"
click CI_MANIFEST_GROUP_JOB "/handbook/security/identity/platform/manifests" "View Details"
click CI_CHANGELOG_USER_JOB "/handbook/security/identity/platform/auditlog" "View Details"
click CI_CHANGELOG_ATTRIBUTE_JOB "/handbook/security/identity/platform/auditlog" "View Details"
click CI_CHANGELOG_ROLE_JOB "/handbook/security/identity/platform/auditlog" "View Details"
click CI_CHANGELOG_GROUP_JOB "/handbook/security/identity/platform/auditlog" "View Details"
click CI_PROVISIONING_OKTA_USER_JOB "/handbook/security/identity/platform/provisioning/okta" "View Details"
click CI_PROVISIONING_OKTA_GROUP_JOB "/handbook/security/identity/platform/provisioning/okta" "View Details"
click CI_PROVISIONING_GOOGLE_GROUP_JOB "/handbook/security/identity/platform/provisioning/google" "View Details"
click CI_PROVISIONING_GITLAB_SAAS_GROUP_JOB "/handbook/security/identity/platform/provisioning/gitlab" "View Details"
click CI_PROVISIONING_GITLAB_SELF_GROUP_JOB "/handbook/security/identity/platform/provisioning/gitlab" "View Details"
classDef slate fill:#cbd5e1,stroke:#475569,stroke-width:1px;
classDef red fill:#fca5a5,stroke:#dc2626,stroke-width:1px;
classDef orange fill:#fdba74,stroke:#ea580c,stroke-width:1px;
classDef yellow fill:#fcd34d,stroke:#ca8a04,stroke-width:1px;
classDef emerald fill:#6ee7b7,stroke:#059669,stroke-width:1px;
classDef cyan fill:#67e8f9,stroke:#0891b2,stroke-width:1px;
classDef sky fill:#7dd3fc,stroke:#0284c7,stroke-width:1px;
classDef violet fill:#c4b5fd,stroke:#7c3aed,stroke-width:1px;
classDef fuchsia fill:#f0abfc,stroke:#c026d3,stroke-width:1px;
end
CI/CD Job Workflows
Users Auditlog
graph TB
subgraph Identity GitLab Repositories
subgraph accessctl-manifests Repo
direction TB
REPO_INV_MANIFESTS_USERS[("manifests/users/<br />users.yml/json/csv")]:::sky
REPO_INV_MANIFESTS_ATTRIBUTES[("manifests/attributes/<br />{attribute}.yml/json/csv")]
REPO_INV_MANIFESTS_ROLES[("manifests/roles/<br />{role}.yml/json/csv")]
REPO_INV_MANIFESTS_OU[("manifests/ou/<br />{ou}.yml/json/csv")]
end
end
subgraph Identity Platform CI/CD Auditlog Stage Scripts
direction LR
CI_USER_JOB[["Stage 2.1<br />Users Job<br/>CLI auditlog:users"]]:::orange
CI_USER_PARSE_MANIFEST_CURRENT[(Parse Current Manifest Commit)]
CI_USER_PARSE_MANIFEST_PREVIOUS[(Parse Previous Manifest Commit)]
CI_USER_PARSE_MANIFEST_FILTER{Filter results<br />with differences}
CI_USER_ONBOARDING_CHECK{{Check if user has been created}}
CI_USER_OFFBOARDING_CHECK{{Check if user has been deprovisioned}}
CI_USER_ATTRIBUTE_CHECK{{Loop through users and<br />compare attributes for differences}}
CI_USER_LOG_S3{{Create Audit Log entry in S3 bucket}}
CI_USER_API{{Audit Transaction<br />REST API Call to accessctl<br />for automation workflows}}
CI_USER_LOG_REPO{{Append Auditlog in Repository}}
CI_USER_JOB --> CI_USER_PARSE_MANIFEST_CURRENT
CI_USER_JOB --> CI_USER_PARSE_MANIFEST_PREVIOUS
CI_USER_PARSE_MANIFEST_CURRENT --> CI_USER_PARSE_MANIFEST_FILTER
CI_USER_PARSE_MANIFEST_PREVIOUS --> CI_USER_PARSE_MANIFEST_FILTER
CI_USER_PARSE_MANIFEST_FILTER --> CI_USER_ONBOARDING_CHECK
CI_USER_PARSE_MANIFEST_FILTER --> CI_USER_OFFBOARDING_CHECK
CI_USER_PARSE_MANIFEST_FILTER --> CI_USER_ATTRIBUTE_CHECK
CI_USER_ONBOARDING_CHECK --> CI_USER_LOG_S3
CI_USER_OFFBOARDING_CHECK --> CI_USER_LOG_S3
CI_USER_ATTRIBUTE_CHECK --> CI_USER_LOG_S3
CI_USER_LOG_S3 --> CI_USER_API
CI_USER_API --> CI_USER_LOG_REPO
end
subgraph Identity GitLab Repositories
subgraph accessctl-auditlog Repo
direction TB
REPO_INV_CHANGELOG_USERS_ONBOARDING[("auditlog/users/<br />onboarding.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_USERS_OFFBOARDING[("auditlog/users/<br />offboarding.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_USERS_CHANGES[("auditlog/users/<br />attributes.yml/json/csv")]:::emerald
end
end
REPO_INV_MANIFESTS_USERS --> CI_USER_JOB
CI_USER_LOG_REPO --> REPO_INV_CHANGELOG_USERS_ONBOARDING
CI_USER_LOG_REPO --> REPO_INV_CHANGELOG_USERS_OFFBOARDING
CI_USER_LOG_REPO --> REPO_INV_CHANGELOG_USERS_CHANGES
classDef slate fill:#cbd5e1,stroke:#475569,stroke-width:1px;
classDef red fill:#fca5a5,stroke:#dc2626,stroke-width:1px;
classDef orange fill:#fdba74,stroke:#ea580c,stroke-width:1px;
classDef yellow fill:#fcd34d,stroke:#ca8a04,stroke-width:1px;
classDef emerald fill:#6ee7b7,stroke:#059669,stroke-width:1px;
classDef cyan fill:#67e8f9,stroke:#0891b2,stroke-width:1px;
classDef sky fill:#7dd3fc,stroke:#0284c7,stroke-width:1px;
classDef violet fill:#c4b5fd,stroke:#7c3aed,stroke-width:1px;
classDef fuchsia fill:#f0abfc,stroke:#c026d3,stroke-width:1px;
Attributes Auditlog
graph TB
subgraph Identity GitLab Repositories
subgraph accessctl-manifests Repo
direction TB
REPO_INV_MANIFESTS_USERS[("manifests/users/<br />users.yml/json/csv")]
REPO_INV_MANIFESTS_ATTRIBUTES[("manifests/attributes/<br />{attribute}.yml/json/csv")]:::sky
REPO_INV_MANIFESTS_ROLES[("manifests/roles/<br />{role}.yml/json/csv")]
REPO_INV_MANIFESTS_OU[("manifests/ou/<br />{ou}.yml/json/csv")]
end
end
subgraph Identity Platform CI/CD Auditlog Stage Scripts
direction LR
CI_ATTRIBUTE_JOB[["Stage 2.2<br />Attributes Job<br/>CLI auditlog:attributes"]]:::orange
CI_ATTRIBUTE_PARSE_MANIFEST_CURRENT[(Parse Current Manifest Commit)]
CI_ATTRIBUTE_PARSE_MANIFEST_PREVIOUS[(Parse Previous Manifest Commit)]
CI_ATTRIBUTE_PARSE_MANIFEST_FILTER{Filter results<br />with differences}
CI_ATTRIBUTE_CREATED_CHECK{{Check if attribute has been created}}
CI_ATTRIBUTE_DELETED_CHECK{{Check if attribute has been deleted}}
CI_ATTRIBUTE_LOG_S3{{Create Audit Log entry in S3 bucket}}
CI_ATTRIBUTE_API{{Audit Transaction<br />REST API Call to accessctl<br />for automation workflows}}
CI_ATTRIBUTE_LOG_REPO{{Append Auditlog in Repository}}
CI_ATTRIBUTE_JOB --> CI_ATTRIBUTE_PARSE_MANIFEST_CURRENT
CI_ATTRIBUTE_JOB --> CI_ATTRIBUTE_PARSE_MANIFEST_PREVIOUS
CI_ATTRIBUTE_PARSE_MANIFEST_CURRENT --> CI_ATTRIBUTE_PARSE_MANIFEST_FILTER
CI_ATTRIBUTE_PARSE_MANIFEST_PREVIOUS --> CI_ATTRIBUTE_PARSE_MANIFEST_FILTER
CI_ATTRIBUTE_PARSE_MANIFEST_FILTER --> CI_ATTRIBUTE_CREATED_CHECK
CI_ATTRIBUTE_PARSE_MANIFEST_FILTER --> CI_ATTRIBUTE_DELETED_CHECK
CI_ATTRIBUTE_CREATED_CHECK --> CI_ATTRIBUTE_LOG_S3
CI_ATTRIBUTE_DELETED_CHECK --> CI_ATTRIBUTE_LOG_S3
CI_ATTRIBUTE_LOG_S3 --> CI_ATTRIBUTE_API
CI_ATTRIBUTE_API --> CI_ATTRIBUTE_LOG_REPO
end
subgraph Identity GitLab Repositories
subgraph accessctl-auditlog Repo
direction TB
REPO_INV_CHANGELOG_ATTRIBUTE[("auditlog/attribute/<br />{attribute}.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_ROLE[("auditlog/role/<br />{role}.yml/json/csv")]
REPO_INV_CHANGELOG_OU[("auditlog/ou/<br />{ou}.yml/json/csv")]
end
end
REPO_INV_MANIFESTS_ATTRIBUTES --> CI_ATTRIBUTE_JOB
CI_ATTRIBUTE_LOG_REPO --> REPO_INV_CHANGELOG_ATTRIBUTE
classDef slate fill:#cbd5e1,stroke:#475569,stroke-width:1px;
classDef red fill:#fca5a5,stroke:#dc2626,stroke-width:1px;
classDef orange fill:#fdba74,stroke:#ea580c,stroke-width:1px;
classDef yellow fill:#fcd34d,stroke:#ca8a04,stroke-width:1px;
classDef emerald fill:#6ee7b7,stroke:#059669,stroke-width:1px;
classDef cyan fill:#67e8f9,stroke:#0891b2,stroke-width:1px;
classDef sky fill:#7dd3fc,stroke:#0284c7,stroke-width:1px;
classDef violet fill:#c4b5fd,stroke:#7c3aed,stroke-width:1px;
classDef fuchsia fill:#f0abfc,stroke:#c026d3,stroke-width:1px;
Roles Auditlog
graph TB
subgraph Identity GitLab Repositories
subgraph accessctl-manifests Repo
direction TB
REPO_INV_MANIFESTS_USERS[("manifests/users/<br />users.yml/json/csv")]
REPO_INV_MANIFESTS_ATTRIBUTES[("manifests/attributes/<br />{attribute}.yml/json/csv")]
REPO_INV_MANIFESTS_ROLES[("manifests/roles/<br />{role}.yml/json/csv")]:::sky
REPO_INV_MANIFESTS_OU[("manifests/ou/<br />{ou}.yml/json/csv")]
end
end
subgraph Identity Platform CI/CD Auditlog Stage Scripts
direction LR
CI_ROLE_JOB[["Stage 2.3<br />Roles Job<br/>CLI auditlog:roles"]]:::orange
CI_ROLE_PARSE_MANIFEST_CURRENT[(Parse Current Manifest Commit)]
CI_ROLE_PARSE_MANIFEST_PREVIOUS[(Parse Previous Manifest Commit)]
CI_ROLE_PARSE_MANIFEST_FILTER{Filter results<br />with differences}
CI_ROLE_CREATED_CHECK{{Check if user has been added}}
CI_ROLE_DELETED_CHECK{{Check if user has been deleted}}
CI_ROLE_LOG_S3{{Create Audit Log entry in S3 bucket}}
CI_ROLE_API{{Audit Transaction<br />REST API Call to accessctl<br />for automation workflows}}
CI_ROLE_LOG_REPO{{Append Auditlog in Repository}}
CI_ROLE_JOB --> CI_ROLE_PARSE_MANIFEST_CURRENT
CI_ROLE_JOB --> CI_ROLE_PARSE_MANIFEST_PREVIOUS
CI_ROLE_PARSE_MANIFEST_CURRENT --> CI_ROLE_PARSE_MANIFEST_FILTER
CI_ROLE_PARSE_MANIFEST_PREVIOUS --> CI_ROLE_PARSE_MANIFEST_FILTER
CI_ROLE_PARSE_MANIFEST_FILTER --> CI_ROLE_CREATED_CHECK
CI_ROLE_PARSE_MANIFEST_FILTER --> CI_ROLE_DELETED_CHECK
CI_ROLE_CREATED_CHECK --> CI_ROLE_LOG_S3
CI_ROLE_DELETED_CHECK --> CI_ROLE_LOG_S3
CI_ROLE_LOG_S3 --> CI_ROLE_API
CI_ROLE_API --> CI_ROLE_LOG_REPO
end
subgraph Identity GitLab Repositories
subgraph accessctl-auditlog Repo
direction TB
REPO_INV_CHANGELOG_ATTRIBUTE[("auditlog/attribute/<br />{attribute}.yml/json/csv")]
REPO_INV_CHANGELOG_ROLE[("auditlog/role/<br />{role}.yml/json/csv")]:::emerald
REPO_INV_CHANGELOG_OU[("auditlog/ou/<br />{ou}.yml/json/csv")]
end
end
REPO_INV_MANIFESTS_ROLES --> CI_ROLE_JOB
CI_ROLE_LOG_REPO --> REPO_INV_CHANGELOG_ROLE
classDef slate fill:#cbd5e1,stroke:#475569,stroke-width:1px;
classDef red fill:#fca5a5,stroke:#dc2626,stroke-width:1px;
classDef orange fill:#fdba74,stroke:#ea580c,stroke-width:1px;
classDef yellow fill:#fcd34d,stroke:#ca8a04,stroke-width:1px;
classDef emerald fill:#6ee7b7,stroke:#059669,stroke-width:1px;
classDef cyan fill:#67e8f9,stroke:#0891b2,stroke-width:1px;
classDef sky fill:#7dd3fc,stroke:#0284c7,stroke-width:1px;
classDef violet fill:#c4b5fd,stroke:#7c3aed,stroke-width:1px;
classDef fuchsia fill:#f0abfc,stroke:#c026d3,stroke-width:1px;
Organization Units Auditlog
graph TB
subgraph Identity GitLab Repositories
subgraph accessctl-manifests Repo
direction TB
REPO_INV_MANIFESTS_USERS[("manifests/users/<br />users.yml/json/csv")]
REPO_INV_MANIFESTS_ATTRIBUTES[("manifests/attributes/<br />{attribute}.yml/json/csv")]
REPO_INV_MANIFESTS_ROLES[("manifests/roles/<br />{role}.yml/json/csv")]
REPO_INV_MANIFESTS_OU[("manifests/ou/<br />{ou}.yml/json/csv")]:::sky
end
end
subgraph Identity Platform CI/CD Auditlog Stage Scripts
direction LR
CI_GROUP_JOB[["Stage 2.4<br />Org Units Job<br/>CLI auditlog:ou"]]:::orange
CI_GROUP_PARSE_MANIFEST_CURRENT[(Parse Current Manifest Commit)]
CI_GROUP_PARSE_MANIFEST_PREVIOUS[(Parse Previous Manifest Commit)]
CI_GROUP_PARSE_MANIFEST_FILTER{Filter results<br />with differences}
CI_GROUP_CREATED_CHECK{{Check if user has been added}}
CI_GROUP_DELETED_CHECK{{Check if user has been deleted}}
CI_GROUP_LOG_S3{{Create Audit Log entry in S3 bucket}}
CI_GROUP_API{{Audit Transaction<br />REST API Call to accessctl<br />for automation workflows}}
CI_GROUP_LOG_REPO{{Append Auditlog in Repository}}
CI_GROUP_JOB --> CI_GROUP_PARSE_MANIFEST_CURRENT
CI_GROUP_JOB --> CI_GROUP_PARSE_MANIFEST_PREVIOUS
CI_GROUP_PARSE_MANIFEST_CURRENT --> CI_GROUP_PARSE_MANIFEST_FILTER
CI_GROUP_PARSE_MANIFEST_PREVIOUS --> CI_GROUP_PARSE_MANIFEST_FILTER
CI_GROUP_PARSE_MANIFEST_FILTER --> CI_GROUP_CREATED_CHECK
CI_GROUP_PARSE_MANIFEST_FILTER --> CI_GROUP_DELETED_CHECK
CI_GROUP_CREATED_CHECK --> CI_GROUP_LOG_S3
CI_GROUP_DELETED_CHECK --> CI_GROUP_LOG_S3
CI_GROUP_LOG_S3 --> CI_GROUP_API
CI_GROUP_API --> CI_GROUP_LOG_REPO
end
subgraph Identity GitLab Repositories
subgraph accessctl-auditlog Repo
direction TB
REPO_INV_CHANGELOG_ATTRIBUTE[("auditlog/attribute/<br />{attribute}.yml/json/csv")]
REPO_INV_CHANGELOG_ROLE[("auditlog/role/<br />{role}.yml/json/csv")]
REPO_INV_CHANGELOG_OU[("auditlog/ou/<br />{ou}.yml/json/csv")]:::emerald
end
end
REPO_INV_MANIFESTS_OU --> CI_GROUP_JOB
CI_GROUP_LOG_REPO --> REPO_INV_CHANGELOG_OU
classDef slate fill:#cbd5e1,stroke:#475569,stroke-width:1px;
classDef red fill:#fca5a5,stroke:#dc2626,stroke-width:1px;
classDef orange fill:#fdba74,stroke:#ea580c,stroke-width:1px;
classDef yellow fill:#fcd34d,stroke:#ca8a04,stroke-width:1px;
classDef emerald fill:#6ee7b7,stroke:#059669,stroke-width:1px;
classDef cyan fill:#67e8f9,stroke:#0891b2,stroke-width:1px;
classDef sky fill:#7dd3fc,stroke:#0284c7,stroke-width:1px;
classDef violet fill:#c4b5fd,stroke:#7c3aed,stroke-width:1px;
classDef fuchsia fill:#f0abfc,stroke:#c026d3,stroke-width:1px;
Last modified May 14, 2024: Update markdownlint and fix biztech folder (
190e30aa)
