Konfiguration des Speichers für externe Anmeldeinformationen

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 8 Minuten Lesedauer
  • Konfigurieren Sie Ihre Instanz, um Anmeldeinformationen aus einem Remote-Repository zu erhalten.

    Diese Verfahren gehen davon aus, dass Sie bereits ein externes Repository mit den Anmeldeinformationen konfiguriert haben, die Sie schützen möchten. Der in konfigurierte Anmeldeinformationsbezeichner ServiceNowDie Instanz muss den tatsächlichen Anmeldeinformationen im Repository über die JAR-Datei zugeordnet werden.

    Hinweis:
    ServiceNow unterstützt zwei externe Tresore gleichzeitig: Einen standardmäßigen CyberArk-Löser für Anmeldeinformationen und einen anwenderdefinierten externen Löser für Anmeldeinformationen. Beim Erstellen eines anwenderdefinierten CyberArk-Anmeldeinformationslösers wird weiterhin der zweite anwenderdefinierte externe Tresor verwendet, und es können keine zusätzlichen anwenderdefinierten externen Tresore verwendet werden.

    Führen Sie die folgenden Aufgaben in der Reihenfolge aus, um den externen Anmeldeinformationsspeicher zu konfigurieren.

    Erstellen Sie eine JAR-Datei, um Anmeldeinformationen aufzulösen

    Erstellen Sie eine JAR-Datei, um vom MID-Server gesendete Anmeldeinformationsbezeichner in tatsächliche Anmeldeinformationen aus dem Repository aufzulösen.

    Vorbereitungen

    Erforderliche Rolle: Agent_admin oder admin

    Stellen Sie sicher, dass Sie alle Anmeldeinformationselemente einschließen, die die Instanz erwartet, z. B. den privaten Schlüssel.

    So erstellen Sie eine JAR-Datei zum Auflösen von Anmeldeinformationen:

    Prozedur

    Verwenden Sie entweder die auf bereitgestellten Vorlagen ServiceNowgithub oder die Java-Beispieldatei.
    Vorsicht:
    Diese Beispiele sind nur als Vorlage vorgesehen. Tun NICHT Verwenden Sie diesen Code in der Produktion, ohne ihn für Ihre Umgebung zu ändern.
    1. Laden Sie die Open Source-JAR-Dateien mit Anweisungen von herunter ServiceNowgithub:
    2. Verwenden Sie die folgende Java-Beispieldatei als Vorlage, und ändern Sie sie entsprechend Ihrer Umgebung:
      
      package com.snc.discovery;
      
      import java.util.*;
      import java.io.*;
      
      /**
       * Basic implementation of a CredentialResolver that uses a properties file.
       */
      
      public class CredentialResolver {
      
      	private static String ENV_VAR = "CREDENTIAL_RESOLVER_FILE";
      	private static String DEFAULT_PROP_FILE_PATH = "C:\\dummycredentials.properties";
      
      	// These are the permissible names of arguments passed INTO the resolve()
      	// method.
      
      	// the string identifier as configured on the ServiceNow instance...
      	public static final String ARG_ID = "id";
      
      	// a dotted-form string IPv4 address (like "10.22.231.12") of the target
      	// system...
      	public static final String ARG_IP = "ip";
      
      	// the string type (ssh, snmp, etc.) of credential as configured on the
      	// instance...
      	public static final String ARG_TYPE = "type";
      
      	// the string MID server making the request, as configured on the
      	// instance...
      	public static final String ARG_MID = "mid";
      
      	// These are the permissible names of values returned FROM the resolve()
      	// method.
      
      	// the string user name for the credential, if needed...
      	public static final String VAL_USER = "user";
      
      	// the string password for the credential, if needed...
      	public static final String VAL_PSWD = "pswd";
      
      	// the string pass phrase for the credential if needed:
      	public static final String VAL_PASSPHRASE = "passphrase";
      
      	// the string private key for the credential, if needed...
      	public static final String VAL_PKEY = "pkey";
      
      	// the string authentication protocol for the credential, if needed...
      	public static final String VAL_AUTHPROTO = "authprotocol";
      
      	// the string authentication key for the credential, if needed...
      	public static final String VAL_AUTHKEY = "authkey";
      
      	// the string privacy protocol for the credential, if needed...
      	public static final String VAL_PRIVPROTO = "privprotocol";
      
      	// the string privacy key for the credential, if needed...
      	public static final String VAL_PRIVKEY = "privkey";
      
      
      	private Properties fProps;
      
      	public CredentialResolver() {
      	}
      
      	private void loadProps() {
      		if(fProps == null)
      			fProps = new Properties();
      
      		try {
      			String propFilePath = System.getenv(ENV_VAR);
      			if(propFilePath == null) {
      				System.err.println("Environment var "+ENV_VAR+" not found. Using default file: "+DEFAULT_PROP_FILE_PATH);
      				propFilePath = DEFAULT_PROP_FILE_PATH;
      			}
      
      			File propFile = new File(propFilePath);
      			if(!propFile.exists() || !propFile.canRead()) {
      				System.err.println("Can't open "+propFile.getAbsolutePath());
      			}
      			else {
      				InputStream propsIn = new FileInputStream(propFile);
      				fProps.load(propsIn);
      			}
      			//fProps.load(CredentialResolver.class.getClassLoader().getResourceAsStream("dummycredentials.properties"));
      		} catch (IOException e) {
      			System.err.println("Problem loading credentials file:");
      			e.printStackTrace();
      		}
      	}
      
      	/**
      	 * Resolve a credential.
      	 */
      	public Map resolve(Map args) {
      		loadProps();
      		String id = (String) args.get(ARG_ID);
      		String type = (String) args.get(ARG_TYPE);
      		String keyPrefix = id+"."+type+".";
      
      		if(id.equalsIgnoreCase("misbehave"))
      			throw new RuntimeException("I've been a baaaaaaaaad CredentialResolver!");
      
      		// the resolved credential is returned in a HashMap...
      		Map result = new HashMap();
      		result.put(VAL_USER, fProps.get(keyPrefix + VAL_USER));
      		result.put(VAL_PSWD, fProps.get(keyPrefix + VAL_PSWD));
      		result.put(VAL_PKEY, fProps.get(keyPrefix + VAL_PKEY));
      		result.put(VAL_PASSPHRASE, fProps.get(keyPrefix + VAL_PASSPHRASE));
      		result.put(VAL_AUTHPROTO, fProps.get(keyPrefix + VAL_AUTHPROTO));
      		result.put(VAL_AUTHKEY, fProps.get(keyPrefix + VAL_AUTHKEY));
      		result.put(VAL_PRIVPROTO, fProps.get(keyPrefix + VAL_PRIVPROTO));
      		result.put(VAL_PRIVKEY, fProps.get(keyPrefix + VAL_PRIVKEY));
      
      		System.err.println("Error while resolving credential id/type["+id+"/"+type+"]");
      
      		return result;
      	}
      
      
      	/**
      	 * Return the API version supported by this class.
      	 */
      	public String getVersion() {
      		return "1.0";
      	}
      
      	public static void main(String[] args) {
      		CredentialResolver obj = new CredentialResolver();
      		obj.loadProps();
      
      		System.err.println("I spy the following credentials: ");
      		for(Object key: obj.fProps.keySet()) {
      			System.err.println(key+": "+obj.fProps.get(key));
      		}
      
      	}
      }

    Importieren Sie eine JAR-Datei, um Anmeldeinformationen aufzulösen

    Importieren Sie eine JAR-Datei, die erstellt wurde, um vom MID-Server gesendete Anmeldeinformationsbezeichner in tatsächliche Anmeldeinformationen aus dem Repository aufzulösen.

    Vorbereitungen

    Erforderliche Rolle: Agent_admin oder admin

    Nach Ihnen Erstellen Sie die JAR-Datei , Importieren Sie es in die Instanz, wo es für den MID-Server zugänglich ist.

    Prozedur

    1. Kopieren Sie nach dem Erstellen der JAR- und Eigenschaftendateien die Eigenschaftendatei auf den MID-Server.
    2. Navigieren zu MID-Server > JAR-Dateienan.
    3. Klicken Sie auf Neu.
    4. Füllen Sie die folgenden Felder aus:
      Feld Beschreibung
      Name Ein eindeutiger und beschreibender Name zur Identifizierung der Datei in der Instanz.
      Version Eine Versionsnummer für die Datei, falls eine verfügbar ist.
      Quelle Speicherort der JAR-Datei zu Referenzzwecken. Quellinformationen werden vom System nicht verwendet.
      Beschreibung Kurzbeschreibung der JAR-Datei und ihres Zwecks in der Instanz.
    5. Klicken Sie im Banner auf das Büroklammer-Symbol, und hängen Sie die JAR-Datei an den Datensatz an.
      Abbildung : 1. Hängen Sie eine JAR-Datei an
      Das Büroklammer-Symbol wird neben der Schaltfläche „Absenden“ angezeigt.
    6. Klicken Sie auf Absenden.
    7. Starten Sie den MID-Serverservice neu.
      Die Plattform macht die JAR-Datei für jeden MID-Server verfügbar, der für die Kommunikation mit der Instanz konfiguriert ist.

    Konfigurieren Sie den Anmeldeinformationsbezeichner

    Konfigurieren Sie den Anmeldeinformationsbezeichner in der Instanz.

    Vorbereitungen

    Erforderliche Rolle: Administrator
    Überprüfen Sie die folgenden Elemente:

    Prozedur

    1. Navigieren zu Alle > Discovery > Anmeldeinformationen oder Orchestration > Anmeldeinformationenan.
    2. Klicken Sie auf Neu.
    3. Wählen Sie einen Anmeldeinformationstyp aus.
    4. Wählen Sie aus Externer Anmeldeinformationsspeicher Kontrollkästchen.
      Die Anwendername Und Passwort Felder werden ausgeblendet, und Anmeldeinformations-ID Feld und Anmeldeinformationsspeicher-Tresor Menü wird angezeigt.
    5. Von Anmeldeinformationsspeicher-Tresor Wählen Sie entweder keine, den CyberArk-Tresor oder einen anwenderdefinierten externen Anmeldeinformationsspeicher aus.
      Hinweis:

      Wenn CyberArk Tresor ausgewählt ist, wird Suchschlüssel Das Menü wird mit vier Suchschlüsseloptionen angezeigt: Anmeldeinformations-ID, IP-Adresse, FQDN, alle oben genannten. Wenn Sie alle der oben genannten Optionen auswählen, kann die Leistung beeinträchtigt werden, da mehrmals auf den Tresor zugegriffen werden muss.

      1. Um einen anwenderdefinierten externen Anmeldeinformationsspeicher zu verwenden, navigieren Sie in der Instanz zu Vault-Konfigurationen [Vault_Configuration.list].
      2. Erstellen Sie einen neuen Datensatz mit einem Namen, der einer importierten JAR-Datei für einen anwenderdefinierten Anmeldeinformations-Resolver zugeordnet ist.

        Siehe Verfahren Erstellen Sie eine JAR-Datei, um Anmeldeinformationen aufzulösenUnd Importieren Sie eine JAR-Datei, um Anmeldeinformationen aufzulösenInformationen zum Erstellen eines anwenderdefinierten Tresors für den Speicher mit externen Anmeldeinformationen.

    6. Füllen Sie das Formular „Anmeldeinformationen“ mithilfe der Felder aus der folgenden Tabelle aus.
      Feld Beschreibung
      Name Geben Sie einen eindeutigen und beschreibenden Namen für diese Anmeldeinformationen ein.
      Aktiv Aktivieren oder deaktivieren Sie diese Anmeldeinformationen zur Verwendung.
      Anmeldeinformations-ID Geben Sie den eindeutigen Schlüssel ein, der für externe Anmeldeinformationen konfiguriert ist, in der JAR-Datei, die auf den MID-Server für ein externes Anmeldeinformationssystem hochgeladen wurde. Dies ist die ID, die an die Java-Klasse in der Parameterzuordnung übergeben wird:
      public static final String ARG_ID   = "id";
      Der MID-Server verwendet diesen Bezeichner, um die tatsächlichen Anmeldeinformationen im Repository aufzulösen.
      Hinweis:
      Dieses Feld ist nur sichtbar, wenn Externer Anmeldeinformationsspeicher Kontrollkästchen ist aktiviert.
      Tag Ermöglichen Sie Workflow-Erstellern, jeder Aktivität in einem Orchestration-Workflow individuelle Anmeldeinformationen zuzuweisen, oder weisen Sie jedem Vorkommen desselben Aktivitätstyps in einem Orchestration-Workflow unterschiedliche Anmeldeinformationen zu.
      Externer Anmeldeinformationsspeicher Aktivieren Sie dieses Kontrollkästchen, um ein externes Anmeldeinformationsspeichersystem zu verwenden. Wenn Sie diese Option auswählen, ist Anwendername Und Passwort Felder werden durch ersetzt Anmeldeinformations-ID Feld. Externer Anmeldeinformationsspeicher ist nur verfügbar, wenn Plugin „externer Anmeldeinformationsspeicher“ In aktiviert.
      Anmeldeinformationsspeicherung – Tresor Wählen Sie den Tresor des externen Anmeldeinformationsspeichers aus einer Liste verfügbarer Tresore aus. Das Menü besteht aus Datensätzen aus den Vault-Konfigurationen [Vault_Configuration.list]. Neue Datensätze können hinzugefügt werden und Namen verwenden, die anwenderdefinierten Anmeldeinformations-Resolver-JAR-Dateien zugeordnet sind. Siehe Verfahren Erstellen Sie eine JAR-Datei, um Anmeldeinformationen aufzulösenUnd Importieren Sie eine JAR-Datei, um Anmeldeinformationen aufzulösenInformationen zum Erstellen eines anwenderdefinierten Tresors für den Speicher mit externen Anmeldeinformationen.
      Beschreibung Wählen Sie aus, ob diese Anmeldeinformationen auf angewendet werden sollen Alle MID-Server In Ihrem Netzwerk oder in einem oder mehreren Bestimmte MID-Server . Geben Sie die MID-Server an, die diese Anmeldeinformationen in verwenden sollen MID-Server Feld.
      MID-Server Wählen Sie einen oder mehrere MID-Server aus der Liste der verfügbaren MID-Server aus. Die in diesem Datensatz konfigurierten Anmeldeinformationen sind für die MID-Server in dieser Liste verfügbar. Dieses Feld ist nur verfügbar, wenn Sie auswählen Bestimmte MID-Server Von Gilt für Feld.
      Bestellung Geben Sie die Reihenfolge (Sequenz) ein, in der die Plattform diese Anmeldeinformationen versucht, während sie versucht, sich bei Geräten anzumelden. Je kleiner die Zahl, desto höher werden diese Anmeldeinformationen in der Liste angezeigt. Legen Sie die Reihenfolge der Anmeldeinformationen fest, wenn eine große Anzahl von Anmeldeinformationen verwendet wird oder wenn Anwender nach drei fehlgeschlagenen Anmeldeversuchen aus Sicherheitsgründen gesperrt werden. Wenn alle Anmeldeinformationen dieselbe Reihenfolgennummer haben (oder keine), versucht Discovery oder Orchestration die Anmeldeinformationen in zufälliger Reihenfolge.
    7. Klicken Sie auf Absenden.

    Konfigurieren Sie den Anmeldeinformationsbezeichner für AWS

    Konfigurieren Sie Ihre Instanz, um Anmeldeinformationen aus einem Remote-Repository zu erhalten.

    Vorbereitungen

    Erforderliche Rolle: Cloud_admin

    Stellen Sie sicher, dass diese Plugins aktiv sind und der MID-Server installiert wurde:
    • Discovery [com.snc.Discovery]
    • Cloud Provisioning and Governance [Com.snc.Cloud.mgmt]
    • Externer Anmeldeinformationsspeicher [com.snc.Discovery.external_credentials]

    Warum und wann dieser Vorgang ausgeführt wird

    Diese Verfahren gehen davon aus, dass Sie bereits ein externes Repository mit den Anmeldeinformationen konfiguriert haben, die Sie schützen möchten. Der in der ServiceNow-Instanz konfigurierte Anmeldeinformationsbezeichner muss den tatsächlichen Anmeldeinformationen im Repository über die JAR-Datei zugeordnet werden.

    Prozedur

    1. Navigieren zu Alle > Discovery > Anmeldeinformationenan.
    2. Wählen Sie eine Anmeldeinformation aus, die Ihr externer Anmeldeinformationsspeicher-Anbieter unterstützt.
    3. Füllen Sie das Formular mithilfe der Felder aus der Tabelle aus.
      Feld Beschreibung
      Name Ein eindeutiger und beschreibender Name für diese Anmeldeinformationen. Beispiel: Amazon Webservices.
      Aktiv Kontrollkästchen zum Aktivieren oder Deaktivieren der Anmeldeinformationen.
      Anmeldeinformations-ID Geben Sie den Namen ein, unter dem diese Anmeldeinformationen im externen Anmeldeinformationsspeicher-Anbieter gespeichert werden.
      MID-Server Wählen Sie einen oder mehrere MID-Server aus, die diese Anmeldeinformationen verwenden können.
      Externer Anmeldeinformationsspeicher Aktivieren Sie dieses Kontrollkästchen, um ein externes Anmeldeinformationsspeichersystem zu verwenden. Wenn externer Speicher aktiviert ist, wird Anmeldeinformations-ID Feld wird angezeigt. Wenn dieses Kontrollkästchen nicht sichtbar ist, klicken Sie in der Kopfzeile auf das Menüsymbol, und wählen Sie aus Ansicht > Externer Speicher Aus dem Kontextmenü.
      Anmeldeinformationsspeicherung – Tresor Wählen Sie Aus CyberArk .
    4. Klicken Sie auf Absenden.