> ## Documentation Index
> Fetch the complete documentation index at: https://help.dsalta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gcore

> Edge cloud, CDN & DNS — users, MFA, logins & assets

<Tabs>
  <Tab title="Overview">
    Connect Gcore with a permanent API token to sync Customer Portal users with their two-step verification status, API tokens, DNS zones and CDN resources, and the portal login history, and run access and MFA reviews. Read-only. Data feeds into your Access accounts, Inventory and Changes pages.

    <Info>
      **Read-only access.** DSALTA only reads data from this integration. It never creates, modifies, or deletes anything in your environment, and every remediation step is performed by your team directly in the third-party product.
    </Info>

    <Info>
      **What you'll see.** The Access page lists the **Customer Portal users** of the one Gcore **account** the token belongs to — the account is implicit in the token. Each row shows the user's name (or their email address when Gcore reports no name), their email, and the portal groups they belong to as their roles (for example **Administrators**, or **Member** when Gcore reports none). Users who have not yet confirmed their invitation, deleted users and reseller principals are left out; API tokens are separate objects and never appear as users. A user the portal marks as inactive is shown as **Inactive**; everyone else is shown as **Active**, and each row is stamped with the date of the sync. Gcore does report per-user two-step verification, so the **MFA** column shows **Yes** or **No**, and is blank (a dash) for a user whose record carries no value.
    </Info>

    <Note>
      DSALTA collects this integration's data when you connect it — you can refresh it at any time with **Sync from integrations** on the **Integrations** page. The compliance checks below re-run once a day at 02:00 America/New\_York.
    </Note>

    ## What DSALTA reads

    DSALTA reads the Customer Portal user roster — names, emails, groups, active state and two-step verification status — which appears on your **Access** page; the account's **API tokens** (name, creation date, expiry, whether it has expired, last use, and the issuing user's email and role — never the token itself), **DNS zones** (status, DNSSEC state and record-set count), **CDN resources** (CNAME, origin group and status), **CDN origin groups** (origin count) and **SSL certificates** (issuer and validity — never key material), which appear on your **Inventory** page; and the portal **login history**, which appears on your **Changes** page. Each login arrives as a change that has already happened — status **Deployed**, titled **Portal login by** (or **Failed portal login by**) the user's email, with the authentication type, IP address and browser user agent in the description, priority **Low** for a successful login and **Medium** for a failed one because Gcore attaches no severity to a login event, type **login**, and **Customer Portal** as the environment. Up to 1,000 login events are read per sync, in the order Gcore returns them, with no date window. CDN resources, origin groups and certificates appear once the CDN service is activated on the account — until then Gcore answers that the service is stopped and that part of the Inventory page stays empty — and DNS zones appear once the account has one. The API-token list always includes the token used for this connection. Users' last-login times are not shown on the Access page.

    It calls these Gcore endpoints on `api.gcore.com`:

    * `/iam/clients/me`
    * `/iam/users`
    * `/iam/activity_log/logins`
    * `/iam/v2/clients/{clientId}/tokens`
    * `/dns/v2/zones`
    * `/cdn/resources`
    * `/cdn/origin_groups`
    * `/cdn/sslData`

    Every request is a read. DSALTA has no code path that creates, modifies, or deletes anything in your Gcore environment.

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection is rejected">
        The token is in the legacy `$`-separated format, which Gcore retired — DSALTA rejects it before any request is made; create a new permanent API token under **Profile → API tokens**. Or the token's **IAM/CDN** role is not **Administrators**: such a token can authenticate but return no users, and DSALTA treats an empty user list as a rejected connection. The **Cloud** role selector in the same dialog is a separate role system and does not unlock the user list. A token can never carry a role higher than its creator's, and a reseller account cannot create API tokens at all.
      </Accordion>

      <Accordion title="The connection stopped working">
        A token with an expiration date stops the sync on that day without warning; Gcore emails the issuer and the account's Administrators 7 days and 1 day before. Create a new token with **Expiration** set to **Never expire**, then disconnect and connect again. Note that disconnecting permanently deletes the data already collected from Gcore.
      </Accordion>

      <Accordion title="Inventory has no CDN or DNS rows">
        Everything beyond the user roster is read best-effort: a failure on one of those calls leaves that part of the page empty without failing the sync. CDN resources, origin groups and certificates stay empty until CDN is activated in the portal (**Get started for free**; no card is needed), and DNS zones appear once the account has one. Do not activate **Cloud**, which asks for a card and adds nothing DSALTA reads. Click **Sync from integrations** on the **Integrations** page to retry.
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="How do I check whether the connection is healthy?">
        Open **Integrations** in the DSALTA sidebar, stay on the **Connected** tab, and click **Manage** on the integration's card. Open the **Status** tab: it shows either **Connected and working properly** or **Connection issues detected**.

        Use the **Status** tab, not **Overview** — Overview always reports **Connected** regardless of the real state.
      </Accordion>

      <Accordion title="A check shows Failed and nothing changed on my side">
        On an integration-powered check, **Failed** normally means DSALTA was blocked rather than that you are non-compliant. Open the test, go to **Source Data**, and read the result code: **403** is a missing permission, **428** is a setting DSALTA still needs, **500** is a failure on DSALTA's side.

        A real compliance gap shows **207** and leaves the test looking **Completed**. See [Understanding Test Results](/guides/compliance/test-results).
      </Accordion>

      <Accordion title="Data looks out of date">
        Compliance checks re-run once a day at 02:00 America/New\_York. To refresh sooner, open **Integrations → Connected** and click **Sync from integrations** at the top right — it refreshes every connected integration at once.
      </Accordion>

      <Accordion title="How do I repair a broken connection?">
        There is no Reconnect, Repair or Refresh Token button. The only repair available is to disconnect and connect again.

        <Warning>
          **Disconnecting is destructive and cannot be undone.** DSALTA removes the access records, inventory, vulnerabilities, code changes, incidents and device records collected from this integration, and deletes the test results tied to the connection. Export anything you still need as audit evidence first — see [Integration errors](/troubleshooting/integration-errors).
        </Warning>
      </Accordion>

      <Accordion title="Configure scope will not let me change anything">
        That is expected. **Configure scope** is read-only — it shows what DSALTA is permitted to read, and has no Save action. To change what DSALTA can see, change the permissions on the credential in the third-party product, then disconnect and connect again.
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="How to connect">
    A Gcore permanent API token created by an account Administrator. The account is detected automatically. Read-only.

    **Before you begin**

    * A Gcore account **Administrator** — reseller accounts cannot create API tokens.

    You will need:

    | Field | Where to find it | Example |
    | - | - | - |
    | **Permanent API token** | Avatar (top right) → **Profile → API tokens → Create token** | Shown once, at creation |

    <Steps>
      <Step title="Start in DSALTA">
        Open **Integrations** in the DSALTA sidebar, find **Gcore**, and click **Connect** to open the connect panel.
      </Step>

      <Step title="Sign in as an account Administrator">
        Sign in at [portal.gcore.com](https://portal.gcore.com) with the account Administrator. A token can never carry a role higher than its creator's, and a reseller account cannot create API tokens.
      </Step>

      <Step title="Create a permanent API token">
        Click the avatar (top right) → **Profile** → **API tokens** → **Create token**. Name it (for example `dsalta-access-sync`), set **Expiration** to **Never expire** — a dated token silently stops the sync on that day — and set the **IAM/CDN** role to **Administrators**. The **Cloud** role selector is a separate role system and does not unlock the user list.

        <Warning>
          **Copy the token as soon as you click Create.** Gcore shows it once and does not store it; click **OK, I've copied token** only after you have copied it. If it is lost, create a new one.
        </Warning>
      </Step>

      <Step title="Optional: activate CDN or Managed DNS for inventory rows">
        Inventory rows come from the products activated on the account. Activate **CDN (Free)** or **Managed DNS (Free)** in the portal with **Get started for free**; no card is needed. Do not activate **Cloud**, which asks for a card. Until CDN is activated, its endpoints answer that the service is stopped and the CDN part of the Inventory page stays empty.
      </Step>

      <Step title="Connect Gcore">
        Return to the connect panel, paste the permanent API token, and click **Connect**.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the token when you click **Connect**. A token in the legacy `$`-separated format is rejected before any request is made; otherwise DSALTA reads the account record and lists the account's users with the token, and rejects a token that returns no users. On success the integration moves to the **Connected** tab, and **Manage → Status** reads **Connected and working properly**. Checks begin reporting after the first sync.
    </Check>

    <Warning>
      **If the connection is rejected.** An invalid or expired token, a legacy `$`-separated token, or a token without the IAM/CDN Administrators role, which returns no users.

      The on-screen message is generic — see [Connection error messages](/troubleshooting/connection-error-messages).
    </Warning>
  </Tab>

  <Tab title="Automated checks">
    Each check below re-runs once a day, at 02:00 America/New\_York, while this integration is connected. Click any check for step-by-step remediation guidance.

    | Check | Severity | What it verifies |
    | - | - | - |
    | [User access to Critical System should be valid](/integrations/gcore/user-access-to-critical-system-should-be-valid) | Info | Checks that everyone with Gcore access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/gcore/offboarded-users-should-not-have-active-access) | High | Checks that offboarded employees no longer have active Gcore access. |
    | [MFA should be enabled for all users](/integrations/gcore/mfa-enabled-for-all-users) | High | Checks that every Gcore Customer Portal user has two-step verification enabled. |
  </Tab>

  <Tab title="Useful links">
    | Topic | Link |
    | - | - |
    | Setup | [Create, use or delete a permanent API token](https://docs.gcore.com/account-settings/create-use-or-delete-a-permanent-api-token) |
    | Remediation | [Manage users](https://docs.gcore.com/account-settings/users/manage-users) |
    | General | [Gcore Customer Portal](https://portal.gcore.com) |
    | DSALTA | [Connection error messages](/troubleshooting/connection-error-messages) |
  </Tab>
</Tabs>
