Resource Manager sichern

Dieses Thema enthält Sicherheitsinformationen und Empfehlungen für Resource Manager.

Mit Resource Manager können Sie das Provisioning von Oracle Cloud Infrastructure-Ressourcen automatisieren, indem Sie die Anweisungen für Konfigurationsdateien festschreiben. Dadurch stellen Sie sicher, dass die bereitgestellten Ressourcen den Sicherheitsrichtlinien Ihres Unternehmens entsprechen. Diese Konfigurationsdateien erfassen die Provisioning-Anweisungen im Detail mit einer deklarativen Sprache, die dem "Infrastructure-as-Code"-Modell folgt. Die Provisioning-Anweisungen werden als Jobs ausgeführt.

Sicherheitszuständigkeiten

Um Resource Manager sicher zu verwenden, lernen Sie Ihre Sicherheits- und Compliance-Zuständigkeiten kennen.

Im Allgemeinen bietet Oracle Sicherheit für Cloud-Infrastruktur und -Vorgänge, wie Zugriffskontrollen für Cloud-Benutzer und Infrastruktursicherheits-Patching. Sie sind für die sichere Konfiguration Ihrer Cloud-Ressourcen verantwortlich. Für die Sicherheit in der Cloud sind Sie und Oracle gleichermaßen verantwortlich.

Oracle ist für die folgenden Sicherheitsanforderungen verantwortlich:

  • Physische Sicherheit: Oracle ist für den Schutz der globalen Infrastruktur verantwortlich, auf der alle in Oracle Cloud Infrastructure angebotenen Services ausgeführt werden. Diese Infrastruktur besteht aus Hardware, Software, Netzwerken und Einrichtungen, die Oracle Cloud Infrastructure-Services ausführen.

Ihre Sicherheitszuständigkeiten sind auf dieser Seite beschrieben. Sie umfassen die folgenden Bereiche:

  • Zugriffskontrolle: Beschränken Sie Berechtigungen so weit wie möglich. Benutzern sollte nur der erforderliche Zugriff zum Ausführen ihrer Aufgaben erteilt werden.
  • Vertraulichkeit: Begrenzen Sie die Verwendung sensibler Daten in Konfigurations- und Ausgabedateien

Erste Sicherheitsaufgaben

Mit dieser Checkliste können Sie die Aufgaben identifizieren, die zum Sichern von Resource Manager in einem neuen Oracle Cloud Infrastructure-Mandanten ausgeführt werden.

Aufgabe Weitere Informationen
Mit IAM-Policys Benutzern und Ressourcen Zugriffsberechtigungen erteilen IAM-Policys

Routinemäßige Sicherheitsaufgaben

Nach den ersten Schritten mit Resource Manager ermitteln Sie anhand dieser Checkliste, welche Sicherheitsaufgaben Sie regelmäßig ausführen sollten.

Aufgabe Weitere Informationen
Begrenzen Sie die Verwendung sensibler Informationen in Konfigurations- und Ausgabedateien Vertraulichkeit
Sicherheitsaudit ausführen Prüfen

IAM-Policys

Verwenden Sie Policys, um den Zugriff auf Resource Manager einzuschränken.

Wichtig

Policys für das Verwalten von Oracle Cloud Infrastructure-Ressourcen sind auch für Resource Manager-Vorgänge erforderlich, die auf Ressourcen zugreifen. Beispiel: Für die Ausführung eines Anwendungsjobs auf einem Stack, der Compute-Instanzen und Subnetze enthält, sind Policys erforderlich, die Ihnen Berechtigungen für diese Ressourcentypen in den Compartments erteilen, in denen Sie die Ressourcen bereitstellen möchten. Beispiele zu Policys zum Verwalten von Oracle Cloud Infrastructure-Ressourcen finden Sie unter Allgemeine Policys.

In einer Policy ist definiert, wer wie auf Oracle Cloud Infrastructure-Ressourcen zugreifen kann. Weitere Informationen finden Sie unter Funktionsweise von Policys.

Weisen Sie einer Gruppe jeweils nur die geringsten Berechtigungen zu, die diese Gruppe benötigt, um ihre Zuständigkeiten ausführen zu können. Jede Policy enthält ein Verb, das beschreibt, welche Aktionen die Gruppe ausführen darf. Folgende Verben sind verfügbar (sortiert nach Berechtigung): inspect, read, use und manage.

Weitere Informationen zu Resource Manager-Policys finden Sie unter Details zu Resource Manager.

Stacks und Jobs verwalten

Erstellen Sie diese Policy, damit eine Gruppe Stacks und Jobs im Mandanten verwalten und Oracle Cloud Infrastructure-Ressourcen in den Mandantenstacks verwalten kann.

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

Erstellen Sie diese Policy, um explizit zu verhindern, dass eine Gruppe Zerstörungsjobs ausführt.

Hinweis

In dieser Policy-Anweisung müssen Sie die neue Berechtigung für read orm-jobs einbeziehen, da die dritte Anweisung eine Bedingung enthält, die Variablen verwendet, die für das Auflisten oder Abrufen von Jobs nicht relevant sind.
Allow group <group_name> to use orm-stacks in tenancy
Allow group <group_name> to read orm-jobs in tenancy
Allow group <group_name> to manage orm-jobs in tenancy where any {target.job.operation = 'PLAN', target.job.operation = 'APPLY'}

Weitere Informationen zu Stackberechtigungen finden Sie unter orm-stacks. Weitere Details zu Jobberechtigungen finden Sie unter orm-jobs.

Konfigurationsquellenprovider verwalten

Erstellen Sie diese Policy, um einer Gruppe die Berechtigung zum Erstellen, Aktualisieren, Verschieben und Löschen von Konfigurationsquellenprovidern im Mandanten zu erteilen.

Allow group <group_name> to manage orm-config-source-providers in tenancy

Erstellen Sie diese Policy, um einer Gruppe die Berechtigung zum Erstellen von Stacks aus Konfigurationsdateien in Quellcodekontrollsystemen (mit vorhandenen Konfigurationsquellenprovidern) zu erteilen sowie Stacks und Jobs zu verwalten.

Allow group <group_name> to read orm-config-source-providers in tenancy
Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

Weitere Informationen zu Berechtigungen des Konfigurationsquellenproviders finden Sie unter orm-config-source-providers.

Private Vorlagen verwalten

Erstellen Sie diese Policy, um einer Gruppe die Berechtigung zum Erstellen, Aktualisieren, Verschieben und Löschen von privaten Vorlagen im Mandanten zu erteilen.

Allow group <group_name> to manage orm-template in tenancy

Erstellen Sie diese Policy, um einer Gruppe neben der Verwaltung von Stacks und Jobs auch die Berechtigung zum Erstellen von Stacks aus privaten Vorlagen zu erteilen.

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy
Allow group <group_name> to read orm-templates in tenancy

Weitere Informationen zu Berechtigungen für private Vorlagen finden Sie unter orm-templates.

Private Endpunkte verwalten

Erstellen Sie diese Policy, um einer Gruppe die Berechtigung zum Erstellen, Aktualisieren, Verschieben und Löschen von privaten Endpunkten im Mandanten zu erteilen, einschließlich der Möglichkeit, VCNs und Subnetze beim Erstellen privater Endpunkte auszuwählen.

Allow group <group_name> to manage orm-private-endpoints in tenancy
  where any request.operation={'CreatePrivateEndpoint'}"
Allow group <group_name> to use virtual-network-family in tenancy

Weitere Details zu Berechtigungen für private Endpunkte finden Sie unter orm-private-endpoints.

Vertrauen

Verwalten und kontrollieren Sie den Zugriff auf vertrauliche Informationen in Resource Manager.

Terraform-Statusdateien

Der Terraform-Status (.tfstate) kann sensible Daten enthalten, einschließlich Ressourcen-IDs, Kennwörtern und SSH-Schlüsseln. Mit dem Vault-Service können Sie Secret-Zugangsdaten verwalten und rotieren, die Sie mit Resource Manager verwenden.

Ein Vault enthält die Verschlüsselungsschlüssel und Secrets, mit denen Sie Ihre Daten schützen und eine Verbindung zu gesicherten Ressourcen herstellen. Secrets werden mit Masterverschlüsselungsschlüsseln verschlüsselt und speichern Zugangsdaten wie Kennwörter, Zertifikate, SSH-Schlüssel oder Authentifizierungstoken. Bevor Sie Secrets erstellen und verwenden, müssen Sie einen Vault und einen Masterverschlüsselungsschlüssel erstellen, sofern diese nicht vorhanden sind.

Beispiel: Sie benötigen einen SSH-Schlüssel, um Remotebefehle und -skripte auf einer Compute-Instanz auszuführen. Siehe Remoteausführung verwenden.

Jedem Secret wird automatisch eine Secret-Version zugewiesen. Wenn Sie ein Secret rotieren, generieren Sie eine neue Secret-Version, indem Sie dem Vault-Service neue Secret-Inhalte bereitstellen. Regelmäßiges Rotieren von Secret-Inhalten verringert die Auswirkungen eventueller Offenlegungen eines Secrets.

Zur Kontrolle des Zugriffs auf die Terraform-Statusdatei können Sie eine Sicherheits-Policy erstellen, die den Zugriff auf Lesejobs beschränkt. Beispiel:

Allow group <group_name> to read orm-jobs in compartment

Jeder Benutzer mit der Berechtigung ORM_JOB_READ kann auf Terraform-Statusdateien zugreifen.

Hinweis

Da die Berechtigung read orm-jobs auch andere Vorgänge wie das Abrufen von Logs und Terraform-Konfigurationen beeinflusst, wird empfohlen, Statusdateien in einem Compartment zu trennen, bei dem eine restriktive Policy die Ausführung anderer Vorgänge nicht beschränkt.

Terraform-Konfigurationen

Der Resource Manager-Workflow umfasst in der Regel das Schreiben oder Generieren einer Terraform-Konfiguration, mit der der Stack verwaltet wird. Da auf die Terraform-Konfiguration mit der Resource Manager-API GetJobTfConfig zugegriffen werden kann, sollten Sie keine sensiblen Daten in die Konfigurationsdateien aufnehmen.

Jeder Benutzer mit der Berechtigung ORM_JOB_READ kann auf Terraform-Konfigurationen zugreifen.

Netzwerksicherheit

Sichern Sie den Netzwerkzugriff auf Ihre Ressourcen im Resource Manager-Service, einschließlich privater Git-Server und Cloud-Ressourcen, auf die Sie über Resource Manager zugreifen.

Anstatt private Ressourcen und entsprechenden Netzwerktraffic der Öffentlichkeit zugänglich zu machen, verwenden Sie private Endpunkte für den Remotezugriff auf diese Ressourcen.

Verwenden Sie Sicherheitslisten , Netzwerksicherheitsgruppen oder eine Kombination aus beiden, um den Traffic auf Paketebene in und aus den Ressourcen in Ihrem VCN (virtuelles Cloud-Netzwerk) zu steuern. Siehe Zugriff und Sicherheit.

Wenn Sie eine Netzwerksicherheitsgruppe (NSG) zur Verwendung mit einem privaten Endpunkt einrichten, nehmen Sie die folgenden Regeln auf.

  • Egress-Regel, die Traffic zu der nicht öffentlichen Ressource zulässt.

    Beispiele für eine nicht öffentliche Compute-Instanz unter der IP-Adresse 192.168.227.87:

    • Mindestzugriff: 192.168.227.87/32
    • Allgemeiner Zugriff auf VCN- und Subnetz-CIDR: 192.168.0.0/16
  • Ingress-Regel, die Traffic vom privaten Endpunkt zulässt.

    Beispiele für eine nicht öffentliche Compute-Instanz unter der IP-Adresse 192.168.227.87:

    • Mindestzugriff: 192.168.198.204/32 (Quelltyp: CIDR)
    • Allgemeiner Zugriff von Subnetz-CIDR: 192.168.0.0/16

Wenn Sie ein Subnetz in einem VCN erstellen, wird das Subnetz standardmäßig als öffentlich betrachtet, und die Internetkommunikation ist zulässig. Mit privaten Subnetzen können Sie Ressourcen hosten, die keinen Internetzugriff erfordern. Sie können auch ein Servicegateway in Ihrem VCN konfigurieren, damit Ressourcen in einem privaten Subnetz auf andere Cloud-Services zugreifen können. Siehe Konnektivitätsoptionen.

Prüfen

Suchen Sie Zugriffslogs und andere Sicherheitsdaten für Resource Manager.

Der Audit-Service zeichnet automatisch alle API-Aufrufe an Oracle Cloud Infrastructure-Ressourcen auf. Sie können Ihre Sicherheits- und Complianceziele erreichen, indem Sie mit dem Audit-Service alle Benutzeraktivitäten in Ihrem Mandanten überwachen. Da alle Konsolen-, SDK- und Befehlszeilenaufrufe über unsere APIs laufen, werden alle Aktivitäten aus diesen Quellen einbezogen. Auditdatensätze sind über eine authentifizierte, filterbare Abfrage-API verfügbar, oder sie können als in Batches verwendete Dateien aus Object Storage abgerufen werden. Zu den Inhalten des Auditlogs gehören die aufgetretenen Aktivitäten, der Benutzer, der diese initiiert hat, Datum und Uhrzeit der Anforderung sowie Quell-IP, Benutzer-Agent und HTTP-Header der Anforderung. Siehe Auditlogereignisse anzeigen.

Beispiel für ein Auditlog

Auditlog für ein CreateJob-Ereignis

{
  "datetime": 1639092316856,
  "logContent": {
    "data": {
      "additionalDetails": {
        "X-Real-Port": 31720
      },
      "availabilityDomain": "AD1",
      "compartmentId": "ocid1.tenancy.oc1..<unique_id>",
      "compartmentName": "mytenancy",
      "definedTags": null,
      "eventGroupingId": "<unique_id>",
      "eventName": "CreateJob",
      "freeformTags": null,
      "identity": {
        "authType": "natv",
        "callerId": null,
        "callerName": null,
        "consoleSessionId": "<unique_id>",
        "credentials": "<key>",
        "ipAddress": "<ip_address>",
        "principalId": "ocid1.user.oc1..<unique_id>",
        "principalName": "<user_name>",
        "tenantId": "ocid1.tenancy.oc1..<unique_id>",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
      },
      "message": "apply-job-20211209152516 CreateJob succeeded",
      "request": {
        "action": "POST",
        "headers": {
          "Accept": [
            "*/*"
          ],
          "Accept-Encoding": [
            "gzip, deflate, br"
          ],
          "Accept-Language": [
            "en"
          ],
          "Authorization": [
            "Signature keyId=\"<key>",version=\"1\",algorithm=\"rsa-sha256\",headers=\"(request-target) host content-length accept-language content-type opc-request-id x-content-sha256 x-date\",signature=\"*****\""
          ],
          "Connection": [
            "keep-alive"
          ],
          "Content-Length": [
            "207"
          ],
          "Content-Type": [
            "application/json"
          ],
          "Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Referer": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com/"
          ],
          "Sec-Fetch-Dest": [
            "empty"
          ],
          "Sec-Fetch-Mode": [
            "cors"
          ],
          "Sec-Fetch-Site": [
            "same-site"
          ],
          "User-Agent": [
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
          ],
          "opc-request-id": [
            "<unique_id>"
          ],
          "x-content-sha256": [
            "<key>"
          ],
          "x-date": [
            "Thu, 09 Dec 2021 23:25:16 GMT"
          ]
        },
        "id": "<unique_id>,
        "parameters": {},
        "path": "/20180917/jobs"
      },
      "resourceId": "ocid1.ormjob.oc1.phx.<unique_id>",
      "response": {
        "headers": {
          "Access-Control-Allow-Credentials": [
            "true"
          ],
          "Access-Control-Allow-Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Access-Control-Expose-Headers": [
            "opc-previous-page,opc-next-page,opc-client-info,ETag,opc-total-items,opc-request-id,Location"
          ],
          "Cache-Control": [
            "no-cache, no-store, must-revalidate"
          ],
          "Content-Length": [
            "1135"
          ],
          "Content-Type": [
            "application/json"
          ],
          "Date": [
            "Thu, 09 Dec 2021 23:25:16 GMT"
          ],
          "ETag": [
            "<unique_id>"
          ],
          "Pragma": [
            "no-cache"
          ],
          "Strict-Transport-Security": [
            "max-age=31536000; includeSubDomains;"
          ],
          "Timing-Allow-Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Vary": [
            "Origin"
          ],
          "X-Content-Type-Options": [
            "nosniff"
          ],
          "X-XSS-Protection": [
            "1; mode=block"
          ],
          "opc-request-id": [
            "<unique_id>"
          ]
        },
        "message": null,
        "payload": {
          "id": "ocid1.ormjob.oc1.phx.<unique_id>",
          "resourceName": "apply-job-<unique_id>"
        },
        "responseTime": "2021-12-09T23:25:16.856Z",
        "status": "200"
      },
      "stateChange": {
        "current": {
          "applyJobPlanResolution": {
            "isAutoApproved": true
          },
          "cancellationDetails": {
            "isForced": false
          },
          "compartmentId": "ocid1.tenancy.oc1..<unique_id>",
          "configSource": {
            "configSourceRecordType": "ZIP_UPLOAD"
          },
          "definedTags": {},
          "displayName": "apply-job-<unique_id>",
          "freeformTags": {},
          "id": "ocid1.ormjob.oc1.phx.<unique_id>",
          "jobOperationDetails": {
            "executionPlanStrategy": "AUTO_APPROVED",
            "operation": "APPLY"
          },
          "lifecycleState": "ACCEPTED",
          "operation": "APPLY",
          "stackId": "ocid1.ormstack.oc1.phx.<unique_id>",
          "timeCreated": "2021-12-09T23:25:16.707Z",
          "variables": {
            "compartment_ocid": "ocid1.tenancy.oc1..<unique_id>",
            "region": "us-phoenix-1",
            "tenancy_ocid": "ocid1.tenancy.oc1..<unique_id>",
            "wp_admin_password": "<example-password>",
            "wp_admin_user": "<user_name>"
          }
        },
        "previous": {}
      }
    },
    "dataschema": "2.0",
    "id": "<unique_id>",
    "oracle": {
      "compartmentid": "ocid1.tenancy.oc1..<unique_id>",
      "ingestedtime": "2021-12-09T23:25:19.071Z",
      "loggroupid": "_Audit",
      "tenantid": "ocid1.tenancy.oc1..<unique_id>"
    },
    "source": "apply-job-<unique_id>",
    "specversion": "1.0",
    "time": "2021-12-09T23:25:16.856Z",
    "type": "com.oraclecloud.OracleResourceManager.CreateJob.begin"
  }
}