지금 지원 담당자와 채팅
지원 담당자와 채팅

Identity Manager 9.2.1 - Referenzhandbuch für die Zielsystemsynchronisation

Zielsystemsynchronisation mit dem Synchronization Editor Arbeiten mit dem Synchronization Editor Grundlagen für die Zielsystemsynchronisation Einrichten der Synchronisation
Synchronization Editor starten Synchronisationsprojekt erstellen Synchronisation konfigurieren
Mappings einrichten Synchronisationsworkflows einrichten Systemverbindungen herstellen Synchronisationsprotokoll konfigurieren Scope bearbeiten Variablen und Variablensets nutzen Startkonfigurationen einrichten Basisobjekte einrichten
Übersicht der Schemaklassen Anpassen einer Synchronisationskonfiguration Konsistenz der Synchronisationskonfiguration prüfen Synchronisationsprojekt aktivieren Startfolgen definieren Synchronisationsprojekte kopieren
Ausführen der Synchronisation Auswerten der Synchronisation Einrichten der Synchronisation mit den Standardkonnektoren Aktualisieren bestehender Synchronisationsprojekte Skriptbibliothek für Synchronisationsprojekte Zusätzliche Informationen für Experten Beheben von Fehlern beim Anbinden von Zielsystemen Konfigurationsparameter für die Zielsystemsynchronisation Beispiele für Konfigurationsdateien

Assistent zur Eingabe von Filtern

An einigen Stellen können benutzerdefinierte Filterbedingungen definiert werden. Die Filterbedingung wird ähnlich einer Bedingung (Where-Klausel) für Datenbankabfragen formuliert.

Die Abfragen können Sie direkt eingeben oder über einen Assistenten zusammenstellen. In die entsprechende Ansicht wechseln Sie über die Schaltfläche und .

  • Für die Definition einer Bedingung werden die Vergleichsoperatoren =, <>, <, >, <=, >= und like unterstützt.

  • Um Bedingungen zu verknüpfen, können Sie die logischen Operatoren UND, ODER und NICHT verwenden.

  • Bei der Definition von Bedingungen können Variablen verwendet werden. Variablen müssen maskiert werden.

    Syntax: '$<Variable>$'

    HINWEIS: Wenn die Bedingung ein Dollarzeichen enthält, welches keine Variable kennzeichnet, muss dieses durch $ maskiert werden.

    Beispiel: '300 $$' vergleicht gegen den Wert '300 $'

    TIPP: Wenn Sie die Bedingung direkt erfassen, können Sie über die Schaltfläche auf vordefinierte Variablen zugreifen.

Im Assistenten werden die einzelnen Bedingungen in speziellen Steuerelementen dargestellt. Die Steuerelemente enthalten Verknüpfungspunkte, um einzelne Bedingungen logisch zu verknüpfen oder einzelne Bedingungen zu löschen. Die Verbindungspunkte werden aktiv, wenn Sie mit der Maus auf die Kante des jeweiligen Steuerelementes zeigen.

Abbildung 2: Assistent zur Eingabe von Filtern

Um einen FilterGeschlossen mit dem Assistenten zu erstellen

  1. Wählen Sie mit der Maus Bedingung erstellen.

    Es wird das Steuerelement für die erste Bedingung eingefügt.

  2. Erfassen Sie die Bedingung.

    1. Klicken Sie mit der Maus auf den linken Teil der Bedingung und wählen Sie die Eigenschaft, nach der gefiltert werden soll.

      Die Eigenschaften, nach denen gefiltert werden kann, werden in einer Auswahlliste angeboten. Zusätzlich können Sie weitere Eigenschaften frei definieren und Variablen verwenden.

    2. Legen Sie den Vergleichsoperator fest. Um den Vergleichsoperator zu ändern, klicken Sie mit der Maus auf den Vergleichsoperator.

      Für die Definition einer Bedingung werden die Vergleichsoperatoren =, <>, <, >, <=, >= und like angeboten.

    3. Legen Sie im rechten Teil der Bedingung den Vergleichswert fest.

      Als Vergleichswert können Sie direkt eine Zeichenkette eingeben oder über eine Auswahlliste eine Eigenschaft auswählen. Zusätzlich können Sie Variablen verwenden.

      HINWEIS: Um nachträglich wieder zum Eingabefeld zu wechseln, wählen Sie aus der Auswahlliste Eingabefeld aus.

  3. Um Bedingungen zu verknüpfen, können Sie die logischen Operatoren UND, ODER und NICHT verwenden.

    1. Zeigen Sie mit der Maus auf die Kante des Steuerelements, das Sie verknüpfen möchten.

      Die Verknüpfungspunkte werden angezeigt.

    2. Zeigen Sie mit der Maus auf einen Verknüpfungspunkt und wählen Sie die Verknüpfung aus.

      Es wird ein neues Steuerelement für eine weitere Bedingung eingefügt.

    HINWEIS: Um ein Steuerelement zu entfernen, wählen Sie den Verknüpfungspunkt Löschen.

Unterstützung bei der Eingabe von Skripten

An verschiedenen Stellen im SynchronisationsprojektGeschlossen können Sie Skripte verwenden; beispielsweise bei der Definition von Schemaeigenschaften, im ObjektfilterGeschlossen oder wenn Sie Datenoperationen für Systemverbindungen über den generischen DatenbankkonnektorGeschlossen definieren. Abhängig von der Skriptsprache, die für das Synchronisationsprojekt festgelegt wurde, können Sie die Skripte als C# Code oder als Visual Basic .NET Code erfassen. Die Skripte werden in einem speziellen Eingabefeld erfasst. Das Eingabefeld besitzt einen erweiterten Bearbeitungsmodus, in dem zusätzliche Aktionen möglich sind.

Um in den erweiterten Bearbeitungsmodus zu wechseln

  • Verwenden Sie Strg + Alt + Eingabe oder die Schaltfläche am rechten unteren Rand.

Abbildung 3: Direkte Eingabe einer Datenbankabfrage

Tabelle 14: Bedeutung der Symbole des erweiterten Bearbeitungsmodus
Symbol Bedeutung

Beenden des erweiterten Bearbeitungsmodus.

Zurücksetzen der letzten Änderung.

Wiederherstellen der letzten Änderung.

Ausschneiden des markierten Codes.

Kopieren des markierten Codes in die Zwischenablage.

Einfügen des Codes aus der Zwischenablage.

Löschen des markierten Codes.

Einzug verkleinern.

Einzug vergrößern.

Text automatisch formatieren.

Textauswahl automatisch formatieren.

Zeilennummern einblenden oder ausblenden.

Kommentarzeichen einfügen.

Kommentarzeichen entfernen.

Zeilennummer einfügen oder entfernen.

Automatischen Zeilenumbruch einfügen oder entfernen.

Automatische Vervollständigung bei der Eingabe von Worten aktivieren oder deaktivieren.

Leerzeichen und Tabstoppzeichen einblenden oder ausblenden.

Suchen innerhalb des Codes.

Code-Ausschnitt einfügen.

Liste der ObjekteigenschaftenGeschlossen anzeigen.

Liste mit Wortvervollständigung anzeigen.

Liste mit Parameterinformationen anzeigen.

Zusätzliche Informationen anzeigen.

Tabelle 15: Tastenkombinationen für die Bearbeitung von Skripten

Tastenkombination

Beschreibung

Strg + C

In die Zwischenablage kopieren.

Strg + Einfg

In die Zwischenablage kopieren.

Strg + X

Ausschneiden und in die Zwischenablage übernehmen.

Umschalt + Entf

Ausschneiden und in die Zwischenablage übernehmen.

Strg + L

Zeile ausschneiden und in die Zwischenablage übernehmen.

Strg + V

Aus der Zwischenablage einfügen.

Umschalt + Einfg

Aus der Zwischenablage einfügen.

Strg + Y

Aktion wiederholen.

Strg + Umschalt + Z

Aktion wiederholen.

Strg + Z

Aktion rückgängig machen.

Rücktaste

Zeichen vor dem Cursor entfernen.

Umschalt + Rücktaste

Zeichen vor dem Cursor entfernen.

Strg + Rücktaste

Wort vor dem Cursor entfernen.

Entf

Zeichen am Cursor entfernen.

Strg + Umschalt + L

Zeile entfernen.

Strg + Entf

Zeichen bis zum nächsten Wort entfernen.

Eingabe

Zeilenumbruch einfügen.

Umschalt + Eingabe

Zeilenumbruch einfügen.

Strg + Eingabe

Zeile oberhalb einfügen.

Strg + Umschalt + Eingabe

Zeile unterhalb einfügen.

Strg + Leertaste

Automatische Vervollständigung.

Strg + Umschalt + Leertaste

Liste mit Parameterinformationen anzeigen.

Tab

Einzug/Tabstopp einfügen.

Umschalt + Tab

Einzug/Tabstopp entfernen.

Strg + U

Markierte Zeichen in Kleinbuchstaben ändern.

Strg + Umschalt + U

Markierte Zeichen in Großbuchstaben ändern

Einfg

Überschreibmodus einschalten oder ausschalten.

Strg + T

Zeichen vor und nach dem Cursor tauschen.

Strg + Umschalt + T

Wörter vor und nach dem Cursor tauschen.

Umschalt + Alt + T

Zeile mit der vorherigen Zeile tauschen.

Alt + Bild-Auf

Zeile nach oben bewegen.

Alt + Bild-Ab

Zeile nach unten bewegen.

Bild-Ab

Nach oben bewegen.

Bild-Auf

Nach unten bewegen.

Nach-Links-Taste

Nach links bewegen.

Nach-Rechts-Taste

Nach rechts bewegen.

Strg + Nach-Links-Taste

Zum vorherigen Wort bewegen.

Strg + Nach-Rechts-Taste

Zum nächsten Wort bewegen.

Pos1

Zum Zeilenanfang bewegen.

Ende

Zum Zeilenende bewegen.

Strg + Pos1

Zum Anfang des Skripts bewegen.

Strg + Ende

Zum Ende des Skripts bewegen.

Bild-Auf

Seite nach oben bewegen.

Bild-Ab

Seite nach unten bewegen.

Strg + Bild-Auf

Zum sichtbaren Anfang bewegen.

Strg + Bild-Ab

Zum sichtbaren Ende bewegen.

Strg + ]

Zur letzten passenden Klammer bewegen. (nicht auf deutscher Tastatur erreichbar)

Strg + Nach-Unten-Taste

Nach unten scrollen.

Strg + Nach-Oben-Taste

Nach oben scrollen.

Strg + F

Suchendialog öffnen.

F3

Weitersuchen.

Strg + F3

Vorwärts suchen.

Umschalt + F3

Rückwärts suchen.

Strg + Umschalt + F3

Vorherige Auswahl finden.

Strg + H

Ersetzen.

Strg + I

Inkrementelle Suche vorwärts.

Strg + Umschalt + I

Inkrementelle Suche rückwärts.

Strg + Umschalt + Num-

Auswahl des Code-Blocks verringern.

Strg + Umschalt + Num+

Auswahl des Code-Blocks erweitern.

Escape

Auswahl entfernen.

Umschalt + Nach-Unten-Taste

Auswahl nach unten erweitern.

Umschalt + Nach-Oben-Taste

Auswahl nach oben erweitern.

Umschalt + Nach-Links-Taste

Auswahl nach links erweitern.

Umschalt + Nach-Rechts-Taste

Auswahl nach rechts erweitern.

Strg + Umschalt + Nach-Links-Taste

Auswahl bis zum vorherigen Wort erweitern.

Strg + Umschalt + Nach-Rechts-Taste

Auswahl bis zum nächsten Wort erweitern.

Umschalt + Pos1

Auswahl bis zum Zeilenanfang erweitern.

Umschalt + Ende

Auswahl bis zum Zeilenende erweitern

Strg + Umschalt + Pos1

Auswahl bis zum Anfang des Skriptes erweitern.

Strg + Umschalt + Ende

Auswahl bis zum Ende des Skriptes erweitern.

Umschalt + Bild-Auf

Auswahl eine Seite nach oben erweitern.

Umschalt + Bild-Ab

Auswahl eine Seite nach unten erweitern.

Strg + Umschalt + Bild-Auf

Auswahl bis zum sichtbaren Anfang erweitern.

Strg + Umschalt + Bild-Ab

Auswahl bis zum sichtbaren Ende erweitern.

Strg + A

Alles auswählen.

Strg + Umschalt + W

Wort auswählen.

Strg + Umschalt + ]

Auswahl bis zur nächsten Klammer erweitern. (nicht auf deutscher Tastatur erreichbar)

Umschalt + Alt + Nach-Unten-Taste

Ausgewählten Block nach unten erweitern.

Umschalt + Alt + Nach-Oben-Taste

Ausgewählten Block nach oben erweitern.

Umschalt + Alt + Nach-Links-Taste

Ausgewählten Block nach links erweitern.

Umschalt + Alt + Nach-Rechts-Taste

Ausgewählten Block nach rechts erweitern.

Strg + Umschalt + Alt + Nach-Links-Taste

Ausgewählten Block bis zum vorherigen Wort erweitern.

Strg + Umschalt + Alt + Nach-Rechts-Taste

Ausgewählten Block bis zum nächsten Wort erweitern.

Strg + Mausrad

Schriftgröße anpassen.

Für die Erstellung des Skriptcodes werden zusätzliche Eingabehilfen angeboten.

Syntaxhervorhebung

Die Eingabefelder unterstützen abhängig vom Syntaxtyp die Syntaxhervorhebung.

Automatische Vervollständigung

Bei der Erstellung von Skriptcode kann die automatische Vervollständigung genutzt werden. Die automatische Vervollständigung können Sie in den Eingabefeldern im erweiterten Bearbeitungsmodus über Schaltfläche aktivieren. Damit wird die automatische Vervollständigung bereits bei der Eingabe der Schlüsselwörter angeboten. Wird im Quellcode an einer Stelle ein Schlüsselwort erwartet, wird die automatische Vervollständigung nach einigen Buchstaben automatisch geöffnet. Nach einigen Zeichen, wie beispielsweise Punkt (.) oder Klammer ((), wird die Autovervollständigung hingegen immer angeboten. Alternativ können Sie die automatische Vervollständigung über die Tastenkombination Strg + Leertaste an geeigneten Stellen der Eingabefelder aufrufen.

Durch die Einblendung verwendbarer Bezeichnungen von Eigenschaften oder Funktionen, wird die Menge des manuell einzutragenden Skriptcodes verringert. Welche Inhalte zur Auswahl angeboten werden, wird über Schlüsselwörter im Skriptcode bestimmt. Auf diese Weise können Sie beispielsweise die Skripte der Skriptbibliothek nutzen.

Eingabe von Code-Ausschnitten

Der One Identity Manager stellt Code-Ausschnitte bereit, die sie als Vorlage nutzen können. Code-Ausschnitte können Sie über folgende Varianten einfügen:

  1. Eingabe über Symbol
    1. Wählen Sie in der Menüleiste das Symbol .

    2. Wählen Sie den Code-Ausschnitt aus.

  2. Eingabe über Tastenkombination
    1. Drücken Sie die Taste F2.

    2. Wählen Sie den Code-Ausschnitt aus.

HINWEIS: Bei direkter Auswahl eines Code-Ausschnittes über Tastenkombination oder über das Symbol werden eine Kurzbeschreibung sowie der Verknüpfungsname als Tooltip angezeigt.

Wenn im Skriptcode gegen einen festen Wert geprüft wird, der mindestens zwei $-Zeichen enthält, müssen die $-Zeichen maskiert werden.

Verwandte Themen

Änderungen dauerhaft speichern

Um mit dem Synchronization EditorGeschlossen neue Objekte, wie SynchronisationsprojekteGeschlossen, Mappings oder Workflows anzulegen, werden verschiedene Assistenten ausgeführt. Die erfassten Daten werden dabei temporär gespeichert. Desgleichen werden Änderungen an diesen Objekten nur temporär gespeichert.

Um Änderungen dauerhaft im Synchronisationsprojekt zu speichern

  • Klicken Sie in der Symbolleiste des Synchronization Editors Übernahme in Datenbank.

    - ODER -

  • Um das Synchronisationsprojekt mit Änderungskennzeichen zu speichern, öffnen Sie das Untermenü für Übernahme in Datenbank und klicken Sie Übernahme mit Änderungskennzeichen. Ausführliche Informationen zum Arbeiten mit Änderungskennzeichen finden Sie im One Identity Manager Administrationshandbuch für betriebsunterstützende Aufgaben.

Wenn das Synchronisationsprojekt erstmalig gespeichert wird, komprimiert der One Identity Manager die Schemas. Dabei werden Schemadaten, die in der Synchronisationskonfiguration nicht benötigt werden, aus dem Synchronisationsprojekt entfernt. Dadurch kann das Laden des Synchronisationsprojekts beschleunigt werden.

HINWEIS: Solange Patches auf ein Synchronisationsprojekt angewendet werden, können keine Änderungen dauerhaft gespeichert werden. Warten Sie mit Änderungen, bis die Aktualisierung abgeschlossen ist.

Sollte eine Aktualisierung mit Fehler enden, beheben Sie zuerst den Fehler und führen Sie die Aktualisierung erneut aus, bevor Sie weitere Änderungen am Synchronisationsprojekt speichern.

Verwandte Themen

Remoteverbindung einrichten

Um die SynchronisationGeschlossen mit einem ZielsystemGeschlossen zu konfigurieren, muss der One Identity Manager Daten aus dem Zielsystem auslesen. Dabei kommuniziert der One Identity Manager direkt mit dem Zielsystem. Mitunter ist der direkte Zugriff von der Arbeitsstation, auf welcher der Synchronization EditorGeschlossen installiert ist, nicht möglich, beispielsweise aufgrund der Firewall-Konfiguration oder weil die Arbeitsstation nicht die notwendigen Hard- oder Softwarevoraussetzungen erfüllt. Wenn der direkte Zugriff von der Arbeitsstation nicht möglich ist, kann eine Remoteverbindung eingerichtet werden.

Um den Remote-Zugriff auf ein Zielsystem zu ermöglichen

  1. Stellen Sie einen Server zur Verfügung, auf dem folgende Software installiert ist.

    • One Identity Manager ServiceGeschlossen

    • Zielsystemkonnektor

    • Zielsystemspezifische Client-Komponenten, wie sie auch auf dem SynchronisationsserverGeschlossen installiert sein müssen.

      Weitere Informationen finden Sie in den Administrationshandbüchern für die Anbindung eines Zielsystems.

  2. Konfigurieren Sie das RemoteConnectPlugin.

    1. Starten Sie das Programm Job Service ConfigurationGeschlossen.

    2. In der Modulliste wählen Sie Plugins und klicken Sie Einfügen.

    3. Im Dialog Modultyp wählen wählen Sie RemoteConnectPlugin und klicken Sie Ok.

    4. In der Modulliste wählen Sie RemoteConnectPlugin.

    5. Um die Eigenschaften des Plugins zu bearbeiten, wählen Sie eine Eigenschaft und klicken Sie Bearbeiten.

      • Bindungsadresse (HttpBindAddress): IP-Adresse der Netzwerkkarte, die verwendet werden soll.

        Wert: + - Alle Netzwerkkarten werden verwendet.

      • Port (Port): Serverport, über den das RemoteConnectPlugin erreichbar ist.

        Wert: Das RemoteConnectPlugin verwendet standardmäßig den Port 2880.

        HINWEIS: Die Firewall muss eingehende TCP-Verbindungen auf diesem Port erlauben.

      • Https verwenden (UseHttps): Definiert, ob eine gesicherte Verbindung (HTTPS) verwendet werden soll.

        Wert: aktiviert - In einer Produktivumgebung sollte immer eine gesicherte Verbindung verwendet werden.

        Die Option sollte nur deaktiviert werden, wenn Sie einen HTTPS-Proxy verwenden. Die Werkzeuge des One Identity Manager (beispielsweise der Synchronization Editor) bauen immer eine gesicherte Verbindung über HTTPS auf.

    6. In der Modulliste wählen Sie Authentifizierungsverfahren.

    7. Klicken Sie ModulGeschlossen wählen und wählen Sie das Authentifizierungsverfahren, mit dem eingehende Anfragen authentifiziert werden sollen.

      • ADGroupAuthentication: Authentifizierung durch die Mitgliedschaft in einer Active Directory Gruppe.

        Voraussetzung: Der RemoteverbindungsserverGeschlossen und die Arbeitsstation müssen in der selben Active Directory Domäne stehen.

        Erlaubte Active Directory Gruppe (PermittedADGroup): Definierter Name oder Objekt-SID der Active Directory Gruppe, deren Mitglieder berechtigt sind, eine Remoteverbindung zu nutzen.

      • SecretAuthentication: Authentifizierung durch Kenntnis eines geheimen Schlüssels.

        Geheimer Schlüssel (Secret): Hashwert des geheimen Schlüssels, den ein Benutzer zur Authentifizierung eingeben muss.

        Berechnen Sie den Hashwert mit Ihrem bevorzugten externen Hashwertrechner und übernehmen Sie diesen Wert. Geben Sie dabei das Verfahren an, mit dem der Hashwert berechnet wurde.

        Syntax: [#<Algorithmus>(-<Format>)]<Hashwert>

        Beispiel: [#SHA512]<HexSHA512Hash>

    8. Klicken Sie Strg+S, um die Änderungen in der Konfigurationsdatei des One Identity Manager Service zu speichern.

  3. Geben Sie den Remoteverbindungsserver als Jobserver im One Identity Manager bekannt.

  4. Starten Sie den One Identity Manager Service.

TIPP: Der Remoteverbindungsserver benötigt dieselbe Konfiguration (bezüglich der installierten Software sowie der Berechtigungen des Benutzerkontos) wie der Synchronisationsserver. Nutzen Sie den Synchronisationsserver gleichzeitig als Remoteverbindungsserver, indem Sie das RemoteConnectPlugin zusätzlich installieren.

Um einen Jobserver zu bearbeiten

  1. Wählen Sie im DesignerGeschlossen die Kategorie Basisdaten > Installationen > Jobserver.

  2. Fügen Sie über den Menüeintrag Jobserver > Neu einen neuen Jobserver ein.

  3. Bearbeiten Sie die Stammdaten des Jobservers.

  4. Wählen Sie den Menüeintrag Ansicht > Serverfunktionen und legen Sie die Serverfunktionen fest.

Wählen Sie mindestens die folgenden Serverfunktionen:

  • <Zielsystemkonnektor>

  • One Identity Manager Service installiert

  1. Wählen Sie den Menüeintrag Ansicht > Maschinenrollen und weisen Sie die RollenGeschlossen des Servers zu.

    Wählen Sie mindestens folgende Rollen:

    • Server/Jobserver/<Zielsystem>

  2. Tragen Sie den Queuenamen des Jobservers in die Konfigurationsdatei des One Identity Manager Service ein.

Ausführliche Informationen finden Sie im One Identity Manager Konfigurationshandbuch und in den Administrationshandbüchern für die Anbindung eines Zielsystems.

Berechtigungen für das Benutzerkonto des One Identity Manager Service

Für den Remote-Zugriff verwendet das RemoteConnectPlugin einen internen HTTPS-Server. Die Berechtigungen des Benutzerkontos für den One Identity Manager Service müssen entsprechend erweitert werden.

  • Damit ein Benutzer einen HTTPS-Server öffnen kann, muss er dazu berechtigt werden. Dazu muss der Administrator dem Benutzer die URL-Genehmigung erteilen. Dies kann über folgenden Kommandozeilenaufruf erfolgen:

    netsh http add urlacl url=https://+:<Portnummer>/Remoting/ user=<Domäne>\<Benutzername> listen=yes

  • Muss der One Identity Manager Service unter dem BenutzerkontoGeschlossen des Network Service (NT Authority\NetworkService) laufen, so müssen explizit Berechtigungen für den internen Webservice vergeben werden. Dies kann über folgenden Kommandozeilenaufruf erfolgen:

    netsh http add urlacl url=https://+:<Portnummer>/Remoting/ user="NT AUTHORITY\NETWORKSERVICE" listen=yes

  • Das Ergebnis können Sie gegebenenfalls über folgenden Kommandozeilenaufruf prüfen:

    netsh http show urlacl

Zertifikat des RemoteConnectPlugin-Ports
  • Da das RemoteConnectPlugin für den Remote-Zugriff HTTPS verwendet, muss dem RemoteConnectPlugin-Port ein Zertifikat zugewiesen werden. Dies kann über folgenden Kommandozeilenaufruf erfolgen:

    netsh http add sslcert ipport=0.0.0.0:<Portnummer> certhash=<Fingerabdruck eines Zertfikates> appid="{F06D38CA-DF0F-4D72-BC33-D3F6472A8DEE}"

  • Das Ergebnis können Sie gegebenenfalls über folgenden Kommandozeilenaufruf prüfen:

    netsh http show sslcert

Verwandte Themen
관련 문서

The document was helpful.

평가 결과 선택

I easily found the information I needed.

평가 결과 선택