Citrix Application Delivery Management Service

Bereitstellen von GSLB-Konfigurationen mithilfe von DNS-Domänennamen

Mit den neuen RBAC-Erweiterungen in Citrix Application Delivery Management (ADM) können nur autorisierte Anwendungsbesitzer eigene DNS-Domänen in Citrix ADM erstellen und verwalten. Sie können nun die App-Besitzer ermächtigen, GSLB-Konfigurationen aus den DNS-Domänen zu erstellen, die sie besitzen, indem Sie bestimmte StyleBooks verwenden. Wenn der ausgewählte DNS-Domänenname dem Benutzer gehört, kann er beim Erstellen von GSLB-Konfigurationen mithilfe von GSLB StyleBooks im Citrix ADM Anwendungs-Dashboard verwendet werden.Citrix ADM gibt es zwei Workflows zum Konfigurieren von GSLB-Konfigurationen.

  1. Workflow für die Administratoren. Richten Sie die RBAC-Umgebung in Citrix ADM ein. Das heißt, um GSLB StyleBooks zu erstellen und zu importieren, müssen Sie Benutzergruppen, Richtlinien und Rollen erstellen und der Gruppe Benutzer zuweisen. Als Administrator müssen Sie diesen Workflow ausführen.

  2. Workflow für die Anwendungseigentümer. Anwendungsbesitzer müssen GSLB-Konfigurationen unter Verwendung von Domänennamen erstellen, die ihnen gehören.

Das folgende Flussdiagramm zeigt beide Workflows:

lokalisiertes Bild

Workflow für die Administratoren

Als Administrator besteht Ihr Workflow zum Erstellen einer RBAC-Umgebung in Citrix ADM aus den folgenden Schritten:

Erstellen Sie zunächst ein StyleBook, um GSLB-Konfigurationen auf den Citrix ADC Instanzen bereitzustellen. Dieses Dokument enthält eine Beispiel-YAML-Inhalt, um Ihnen zu helfen, Ihr eigenes StyleBook zu erstellen -Erstellen Sie Ihr StyleBook.

Weitere Informationen zum Erstellen benutzerdefinierter StyleBooks finden Sie unterErstellen und Verwenden von benutzerdefinierten StyleBooks.

Hinweis

Citrix ADM unterstützt ein neues Konstrukt in StyleBooks namens allowed-dynamic-values. Mit diesem Konstrukt kann der Benutzer die DNS-Domänenwerte auflisten und auswählen, die in Citrix ADM vorhanden sind, um den Parameter domain-name im StyleBook in Citrix ADM GUI automatisch aufzufüllen.

Ein Beispiel-Parameterabschnitt domain-name wird für Ihre Referenz bereitgestellt.

Der hier verwendete Parameter domain-name ist nur ein Beispiel. Der Parameter kann in Ihrem benutzerdefinierten StyleBook unterschiedlich sein.

-
  name: domain-name
   label: DNS Domain Name
   description: GSLB DNS Domain Name
   type: string
   required: true
   allowed-dynamic-values:
      source: local
      resource-type: dns_domain_entry

Hinweis

Derzeit in Citrix ADM wird das Konstrukt allowed-dynamic values in keinem der Standard-StyleBooks verwendet. Erstellen Sie ein neues benutzerdefiniertes GSLB StyleBook mit dem Standard-GSLB StyleBook. Ersetzen Sie das Teil für den Domänennamen-Parameter durch das oben angegebene Beispiel. Sie können einen beliebigen Texteditor verwenden, um neue StyleBooks zu erstellen.

  1. Melden Sie sich bei Citrix ADM als Administrator an.

  2. Navigieren Sie zu Anwendungen > Konfigurationen > StyleBooks.

  3. Klicken Sie auf Neues StyleBook importieren, und laden Sie das neue GSLB StyleBook in Citrix ADM hoch.

    lokalisiertes Bild

    Weitere Informationen zum Importieren von StyleBooks in Citrix ADM finden Sie unterBenutzerdefinierte StyleBooks verwenden.

  4. Navigieren Sie zu System > Benutzer > Richtlinien, und klicken Sie auf Hinzufügen, um eine Zugriffsrichtlinie für die Anwendungseigentümer einzurichten, wie unten dargestellt.

    Citrix empfiehlt, eine Zugriffsrichtlinie zu erstellen, um sicherzustellen, dass die Anwendungseigentümer den von Ihnen festgelegten RBAC-Regeln nicht umgehen.

  5. Geben Sie einen Namen für die Richtlinie und eine kurze Beschreibung ein. Stellen Sie im Abschnitt Berechtigungen sicher, dass die folgenden Berechtigungen zum Ansichtsbearbeiten zwingend überprüft werden.

    1. Anwendungen > Dashboard

    2. Anwendungen > Konfigurationen

    3. Netzwerke > Instanzen

    4. Netzwerke > Lizenzverwaltung

    5. Netzwerke > DNS-Domänennamen

    Sie können ggf. weitere Berechtigungen bereitstellen und auf Erstellenklicken.

    lokalisiertes Bild

  6. Navigieren Sie zu System > Benutzer > Rollen, erstellen Sie eine Rolle und weisen Sie die im vorherigen Schritt erstellte Richtlinie zu.

  7. Geben Sie einen Namen für die Rolle ein, und geben Sie eine kurze Beschreibung an. Wählen Sie im Abschnitt Richtlinien die Option AppOwnerExampleAccessPolicyaus.

    lokalisiertes Bild

  8. Navigieren Sie zu System > Benutzer > Gruppen, erstellen Sie eine Gruppe, und ordnen Sie die im vorherigen Schritt erstellte Rolle zu.

  9. Geben Sie einen Namen und eine Beschreibung ein, und wählen Sie im Abschnitt Rollen die Option AppOwnerExampleroleaus.

    lokalisiertes Bild

  10. Klicken Sie auf Weiter.

  11. Wählen Sie auf der Registerkarte Autorisierungseinstellungen die Citrix ADC Instanzen, auf die der Anwendungseigentümer Zugriff hat, und das neue GSLB-StyleBook aus.

    lokalisiertes Bild

    Wiederholen Sie diesen Schritt, um so viele Benutzergruppen zu erstellen, wie Sie in Ihrer Organisation benötigen. Klicken Sie auf Gruppe erstellen.

  12. Erstellen Sie einen Systembenutzer und weisen Sie den Benutzer einer Benutzergruppe zu. Dieses Dokument bezieht sich nur auf lokal erstellte Benutzer. Sie müssen keine Benutzer in Benutzergruppen erstellen, wenn Citrix ADM für die Verwendung externer Authentifizierung (z. B. LDAP) eingerichtet ist. Die Benutzerzuordnung zu Gruppen wird aus dem externen Authentifizierungsverzeichnis abgerufen.

    1. Navigieren Sie zu System > Benutzer > Benutzer.

    2. Geben Sie einen Benutzernamen und ein Kennwort für den Systembenutzer ein, und weisen Sie den Benutzer der Gruppe zu.

    lokalisiertes Bild

    Hinweis

    Schritt 12 ist optional und ist nicht erforderlich, wenn externe Authentifizierung wie LDAP verwendet wird.

Citrix ADM REST-API für Admin-Workflow

REST-API für die Anmeldung bei Citrix ADM

URL: http: //<MAS_IP>/nitro/v2/config/login
HTTPMETHOD: POST

Body Payload:
{
  "login": {
    "username": "<USER_NAME>",
    "password": "<PASSWORD>",
    "session_timeout": 1800
  }
}

The response results in a session cookie header, that can be sent with the rest of the API requests below.

Set-Cookie: SESSID=##ED31F7C886E248CCDCA8F0E0AD2AA511ACCC5F46C48D6D2BCAA719A9DE62;path=/;secure;HttpOnly

REST-API zum Erstellen einer Zugriffsrichtlinie

URL: https://<MAS_IP>/nitro/v2/config/rba_policy
HTTP METHOD: POST

{
  "rba_policy": {
    "name": " AppOwnerAccessPolicy",
    "description": " ExampleCompany AppOwner Access Policy",
    "tenant_id": "7c12ec97-1472-4096-97e7-a5acb453cc5c",
    "statement": [
      {
        "access_type": true,
        "resource_type": "application",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server,app_category"
      },
      {
        "access_type": true,
        "resource_type": "application",
        "operation_name": "get",
        "dependent_resources": "download,smtp_server,ns_vserver_license,app_category,app_summary,app_health_dashboard_details,haproxy_frontend,haproxy_backend,haproxy_frontend_stats"
      },
      {
        "access_type": true,
        "resource_type": "si_app_unit",
        "operation_name": "get",
        "dependent_resources": "download,smtp_server,app_summary,si_app_summary,si_device,security_app_dashboard_details,si_geo_location,si_safety_app_firewall,si_safety_overview,si_safety_security_check,si_safety_system_security,si_safety_signature"
      },
      {
        "access_type": true,
        "resource_type": "stylebooks",
        "operation_name": "get",
        "dependent_resources": "download,smtp_server,ns_vserver_license"
      },
      {
        "access_type": true,
        "resource_type": "stylebooks",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "configpacks",
        "operation_name": "get",
        "dependent_resources": "download,smtp_server,stylebooks,ns_vserver_license"
      },
      {
        "access_type": true,
        "resource_type": "configpacks",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "stylebooks_system_settings",
        "operation_name": "get",
        "dependent_resources": "download,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "stylebooks_system_settings",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "ns_crvserver",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,perf_cache_redirection_report,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_crvserver",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "haproxy_frontend",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,haproxy_backend,haproxy_server"
      },
      {
        "access_type": true,
        "resource_type": "haproxy_frontend",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "ns_server",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,ns_emon_poll_policy,poll_activity_status,ns_server,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_server",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,ns_emon_poll_policy,poll_activity_status,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_lbvserver",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,perf_lb_vserver_report,ns_emon_poll_policy,poll_activity_status,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_lbvserver",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,ns_emon_poll_policy,poll_activity_status,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_service",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,ns_emon_poll_policy,poll_activity_status,ns_visualizer_lb_bindings,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_service",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,ns_emon_poll_policy,poll_activity_status,ns_visualizer_lb_bindings,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_servicegroup",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,ns_emon_poll_policy,poll_activity_status,ns_servicegroupmember_binding,ns_visualizer_lb_bindings,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_servicegroup",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,ns_emon_poll_policy,poll_activity_status,ns_servicegroupmember_binding,ns_visualizer_lb_bindings,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_authenticationvserver",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,perf_authentication_report,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_authenticationvserver",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "syslog_messages",
        "operation_name": "get",
        "dependent_resources": "download,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "ns_emon_poll_policy",
        "operation_name": "get",
        "dependent_resources": "download,poll_activity_status,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "ns_emon_poll_policy",
        "operation_name": "add",
        "dependent_resources": "download,poll_activity_status,mail_profile,slack_profile,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "ns_visualizer_gslb_bindings",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,poll_activity_status,ns_emon_poll_policy,ns_gslbvserver_domain,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_visualizer_gslb_bindings",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,poll_activity_status,ns_emon_poll_policy,ns_gslbvserver_domain,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_gslbservice",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_gslbservice",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_gslbvserver",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,perf_global_server_load_balancing_report,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_gslbvserver",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,poll_activity_status,ns_emon_poll_policy,lb_export_report"
     },
      {
        "access_type": true,
        "resource_type": "ns_vpnvserver",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_vpnvserver",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,perf_ssl_vpn_report,poll_activity_status,ns_emon_poll_policy,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_csvserver",
        "operation_name": "get",
        "dependent_resources": "download,DeviceAPIProxy,smtp_server,perf_content_switching_report,ns_emon_poll_policy,poll_activity_status,ns_visualizer_cs_bindings,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "ns_csvserver",
        "operation_name": "add",
        "dependent_resources": "DeviceAPIProxy,mail_profile,slack_profile,smtp_server,ns_emon_poll_policy,poll_activity_status,ns_visualizer_cs_bindings,lb_export_report"
      },
      {
        "access_type": true,
        "resource_type": "dns_domain_entry",
        "operation_name": "get",
        "dependent_resources": ""
      },
      {
        "access_type": true,
        "resource_type": "dns_domain_entry",
        "operation_name": "add",
        "dependent_resources": ""
      },
      {
        "access_type": true,
        "resource_type": "devicewise_detail_summary",
        "operation_name": "get",
        "dependent_resources": "download,mps_user_heatmap,ns_event,mps_agent,active_event,smtp_server,mps_datacenter,event_severity_report,event_device_report,ns_conf,device_event_summary"
      },
      {
        "access_type": true,
        "resource_type": "devicewise_detail_summary",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "cbwanopt",
        "operation_name": "get",
        "dependent_resources": "download,device_backup,traceroute,inventory,inventory_status,ping,mps_datacenter,cbwanopt_device_profile,sdwanvw_device_profile,sdwanvw_snmp_config,sdwanvw_appflowconfig,smtp_server,cbwanopt_snmp_config,cbwanopt_appflowconfig,sdwanvw,tag"
      },
      {
        "access_type": true,
        "resource_type": "cbwanopt",
        "operation_name": "add",
        "dependent_resources": "inventory,managed_device,device_backup,upload,cbwanopt_device_profile,mps_datacenter,mail_profile,slack_profile,smtp_server,sdwanvw_device_profile,sdwanvw_snmp_config,sdwanvw_appflowconfig,cbwanopt_snmp_config,cbwanopt_appflowconfig,sdwanvw,tag"
      },
      {
        "access_type": true,
        "resource_type": "device_login",
        "operation_name": "get",
        "dependent_resources": ""
      },
      {
        "access_type": true,
        "resource_type": "ns",
        "operation_name": "get",
        "dependent_resources": "download,ns_config_replicate,ns_conf,ns_ns_runningconfig,ns_ns_savedconfig,active_event,device_backup,traceroute,inventory,inventory_status,ping,ns_device_profile,nssdx_device_profile,sdx_snmp_config,sdx_syslog_config,smtp_server,ns_cluster,ns_snmp_config,ns_syslog_config,ns_l7_latency_config,ica_l7_latency_update,af_vserver_policy,ns_vserver_appflow_config,mps_datacenter,ns_appflow_param_config,ns_ns_license,ns_ns_mode,ns_network_interface,advanced_analytics_config,tag"
      },
      {
        "access_type": true,
        "resource_type": "ns",
        "operation_name": "add",
        "dependent_resources": "inventory,ns_l7_latency_config,ica_l7_latency_update,af_vserver_policy,ns_config_replicate,managed_device,device_backup,upload,ns_device_profile,nssdx_device_profile,mps_datacenter,sdx_snmp_config,sdx_syslog_config,mail_profile,slack_profile,smtp_server,ns_cluster,ns_snmp_config,ns_syslog_config,ns_vserver_appflow_config,ns_appflow_param_config,advanced_analytics_config,tag"
      },
      {
        "access_type": true,
        "resource_type": "haproxyhost",
        "operation_name": "get",
        "dependent_resources": "download,traceroute,inventory,inventory_status,ping,mps_datacenter,smtp_server,haproxy_device_profile,device_backup,tag"
      },
      {
        "access_type": true,
        "resource_type": "haproxyhost",
        "operation_name": "add",
        "dependent_resources": "inventory,managed_device,mail_profile,slack_profile,smtp_server,mps_datacenter,haproxy_device_profile,haproxy,device_backup,tag"
      },
      {
        "access_type": true,
        "resource_type": "docker_host",
        "operation_name": "add",
        "dependent_resources": "inventory,ns_snmp_config,managed_device,ns,upload,mail_profile,slack_profile,smtp_server,mps_datacenter,ns_device_profile,docker_nscpx_image"
      },
      {
        "access_type": true,
        "resource_type": "docker_host",
        "operation_name": "get",
        "dependent_resources": "download,ns_snmp_config,ns_conf,ns_ns_runningconfig,ns_ns_savedconfig,smtp_server,mps_datacenter,ns_device_profile,traceroute,inventory,inventory_status,ping,active_event,ns_ns_license,ns_ns_mode,ns_network_interface"
      },
      {
        "access_type": true,
        "resource_type": "perf_reports",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server,perf_custom_dashboard"
      },
      {
        "access_type": true,
        "resource_type": "perf_reports",
        "operation_name": "get",
        "dependent_resources": "download,smtp_server,perf_report_counters,perf_res_util_report,perf_http_req_tcp_conn_report,perf_lb_ssl_traffic_report,perf_ip_bytes_rxtx_report,perf_ip_pkt_rxtx_report,perf_icmp_pkt_rxtx_report,perf_icmp_bytes_rxtx_report,perf_icmpv6_pkt_rxtx_report,perf_icmpv6_bytes_rxtx_report,perf_ipv6_bytes_rxtx_report,perf_ipv6_pkt_rxtx_report,perf_udp_bytes_rxtx_report,perf_udp_packets_rxtx_report,perf_cmp_bytes_rxtx_report,perf_cmp_tcp_bytes_rxtx_report,perf_cmp_tcp_ratiosaving_report,perf_cmp_decmp_bytes_rxtx_report,perf_cmp_decmp_ratiosaving_report,perf_tcp_server_conn_report,perf_tcp_surgelen_spareconn_report,perf_http_bytes_rx_report,perf_http_gets_posts_report,perf_ssl_transactions_hits_report,perf_ssl_client_auth_report,perf_ssl_rsa_dhkey_report,perf_ssl_frontend_ciphers_report,perf_ssl_backend_ciphers_report,perf_wsdevice_cpu_utilization_report,perf_wsdevice_send_compression_ratio_report,perf_wsdevice_connected_plugins_report,perf_wsdevice_data_reduction_report,perf_wsdevice_link_utilization_report,perf_wsserviceclassstatstable_pass_through_connection_report,perf_wsserviceclassstatstable_service_class_report,perf_wsserviceclassstatstable_acceleration_report,perf_wslinkstatstable_throughput_report,perf_wslinkstatstable_packet_loss_report,perf_wsappstatstable_application_report,perf_wsqosstatstable_qos_report,perf_ssl_cpu_keyexchange_report,perf_ssl_be_rsa_dhkey_report,perf_custom_dashboard,perf_ns_throughput_report,perf_network_interface_report"
      },
      {
        "access_type": true,
        "resource_type": "perf_threshold",
        "operation_name": "get",
        "dependent_resources": "download,perf_reports,perf_report_counters,smtp_server,sms_server,sms_profile"
      },
      {
        "access_type": true,
        "resource_type": "perf_threshold",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server,sms_server,sms_profile"
      },
      {
        "access_type": true,
        "resource_type": "perf_poll_config",
        "operation_name": "add",
        "dependent_resources": "mail_profile,slack_profile,smtp_server"
      },
      {
        "access_type": true,
        "resource_type": "perf_poll_config",
        "operation_name": "get",
        "dependent_resources": "smtp_server,download"
      },
      {
        "access_type": true,
        "resource_type": "license_server_info",
        "operation_name": "get",
        "dependent_resources": "sms_server,license_proxy_server,jazz_license,download,sms_profile,smtp_server,user_managed_tp_vserver,managed_vserver,user_managed_vserver,haproxy_frontend,haproxy_backend,license_file,device_license_info,license_info,ns_authenticationvserver,ns_gslbvserver,ns_vpnvserver,ns_csvserver,ns_crvserver,ns_lbvserver,autoselection_preference,license_threshold,license_expiry_info"
      },
      {
        "access_type": true,
        "resource_type": "license_server_info",
        "operation_name": "add",
        "dependent_resources": "sms_server,license_proxy_server,jazz_license,sms_profile,mail_profile,slack_profile,smtp_server,user_managed_tp_vserver,managed_vserver,upload,license_file,license_info,license_threshold,mas_license,user_managed_vserver,autoselection_preference,license_expiry_info"
      }
    ],
    "ui": [
      {
        "access_type": true,
        "name": "ApplicationsDashboard",
        "display_name": "Dashboard"
      },
      {
        "access_type": true,
        "name": "SecurityDashboard",
        "display_name": "App Security Dashboard"
      },
      {
        "access_type": true,
        "name": "Stylebooks",
        "display_name": "StyleBooks"
      },
      {
        "access_type": true,
        "name": "Stylebooks",
        "display_name": "Configpacks"
      },
      {
        "access_type": true,
        "name": "StylebooksSettings",
        "display_name": "Settings"
      },
      {
        "access_type": true,
        "name": "CacheRedirection",
        "display_name": "Cache Redirection"
      },
      {
        "access_type": true,
        "name": "HAProxy",
        "display_name": "HAProxy"
      },
      {
        "access_type": true,
        "name": "Servers",
        "display_name": "Servers"
      },
      {
        "access_type": true,
        "name": "VirtualServers",
        "display_name": "Virtual Servers"
      },
      {
        "access_type": true,
        "name": "Services",
        "display_name": "Services"
      },
      {
        "access_type": true,
        "name": "ServiceGroups",
        "display_name": "Service Groups"
      },
      {
        "access_type": true,
       "name": "Authentication",
        "display_name": "Authentication"
      },
      {
        "access_type": true,
        "name": "MonitoringAuditing",
        "display_name": "Auditing"
      },
      {
        "access_type": true,
        "name": "MonitoringSettings",
        "display_name": "Settings"
      },
      {
        "access_type": true,
        "name": "GSLBDomains",
        "display_name": "Domains"
      },
      {
        "access_type": true,
        "name": "GSLBServices",
        "display_name": "Services"
      },
      {
        "access_type": true,
        "name": "GSLBVirtualServer",
        "display_name": "Virtual Server"
      },
      {
        "access_type": true,
        "name": "NetScalerGateway",
        "display_name": "NetScaler Gateway"
      },
      {
        "access_type": true,
        "name": "ContentSwitching",
        "display_name": "Content Switching"
      },
      {
        "access_type": true,
        "name": "DNSDomainNames",
        "display_name": "DNS Domain Names"
      },
      {
        "access_type": true,
        "name": "NetworkDashboard",
        "display_name": "Instances Dashboard"
      },
      {
        "access_type": true,
        "name": "NetScalerSDWANWOInstances",
        "display_name": "NetScaler SD-WAN"
      },
      {
        "access_type": true,
        "name": "InstanceOperations",
        "display_name": "Instance Operations"
      },
      {
        "access_type": true,
        "name": "NetScalerInstances",
        "display_name": "NetScaler ADC"
      },
      {
        "access_type": true,
        "name": "HAProxyInstances",
        "display_name": "HAProxy"
      },
      {
        "access_type": true,
        "name": "NetScalerCPXDockerHost",
        "display_name": "Docker Hosts"
      },
      {
        "access_type": true,
        "name": "Reports",
        "display_name": "Reports"
      },
      {
        "access_type": true,
        "name": "Thresholds",
        "display_name": "Thresholds"
      },
      {
        "access_type": true,
        "name": "ReportingSettings",
        "display_name": "Settings"
      },
      {
        "access_type": true,
        "name": "Licenses",
        "display_name": "License Management"
      }
    ]
  }
}

REST-API zum Erstellen einer Zugriffsrolle

URL: https://<MAS_IP>/nitro/v2/config/rba_role
HTTPMETHOD: POST

Payload:
{
  "rba_role": {
    "name": "AppOwnerRole",
    "description": "ExampleCompany App Owner Role",
    "policies": [
      "AppOwnerAccessPolicy"
    ]
  }

REST-API zum Hochladen des neuen GSLB StyleBook

URL: https://<MAS_IP>/stylebook/nitro/v2/config/stylebooks
HTTPMETHOD: POST

Payload:
{
    "stylebook": {
      "file_name": "my-own-gslb.yaml",
      "source": "bmFtZTogZ3NsYi1kbnMtZG9tYW...aXRvcm5hbWU=",
      "encoding": "base64"
    }
  }

Hinweis:

Der Name des StyleBook kann sich auf Ihrem System ändern.

REST-API zum Erstellen von Gruppen und Zuweisen ausgewählter Instanzen und StyleBooks

URL: https://<MAS_IP>/nitro/v2/config/mpsgroup
HTTPMETHOD: POST

Payload:
{
  "mpsgroup": {
    "id": "",
    "name": "AppOwnerGroup1",
    "description": "ExampleCompany App Owner Group",
    "roles": [
      "AppOwnerRole"
    ],
    "enable_session_timeout": false,
    "assign_all_devices": false,
    "ass ign_all_apps": false,
    "application_names_with_regex": [

    ],
    "standalone_instances_id": [
      "72c178da-47df-4426-9acc-cd6316f92506",
      "c948061e-6240-4062-931c-f6988ef36e3b"
    ],
    "application_list": [

    ],
    "permission": "none",
    "application_names": [

    ],
    "authscope_props": [
      {
        "propname": "configuration_template_id",
        "propvalues": [
          "NONE"
        ]
      },
      {
        "propname": "dns_domain_entry_id",
        "propvalues": [
          "cf6631e5-2f56-4bb1-b0a5-90fabfc0e3e2",
          "b268905c-522d-47e3-a2ca-3f8d8a754373"
        ]
      },
      {
        "propname": "stylebook_id",
        "propvalues": [
          "gslbbb963abe85936913035e1d4dd14b56f7",
          "moni72fad4494466d102b19c18ac329fa9f3"
        ]
      }
    ],
    "tenant_id": "6d024111-6636-4571-a250-d47b31aba7a8"
  }
}

Hinweis

Um die IDs für DNS-Domänennamen und GSLB-StyleBooks zu erhalten, die in der oben genannten API-Nutzlast verwendet werden, können Sie reguläre Citrix ADM APIs zum Abfragen von IDs verwenden, die Entitätsnamen entsprechen. Um beispielsweise die ID für eine DNS-Domäne namens app1.acme.com zu erhalten, können Sie die folgende Citrix ADM REST-API verwenden.

URL: https://<MAS_IP>/nitro/v2/config/dns_domain_entry?filter=name: app1.acme.com
HTTPMETHOD: GET

The ID of this domain can be extracted from the following response.
{
  "errorcode": 0,
  "message": "Done",
  "operation": "get",
  "resourceType": "dns_domain_entry",
  "username": "nsroot",
  "tenant_name": "Owner",
  "tenant_id": "568d8e12-1d88-42b2-8943-cbaa04826fd1",
  "resourceName": "",
  "dns_domain_entry": [
    {
      "tenant_id": "568d8e12-1d88-42b2-8943-cbaa04826fd1",
      "name": "app1.acme.com",
      "id": "3e3d85ea-1c21-49b2-97f4-60fccdbae2e0",
      "description": "app1 domain name"
    }
  ]
}

Ebenso können Sie die folgende API verwenden, um die StyleBook-ID für ein StyleBook zu erhalten, dessen Namespace com.citrix.adc.stylebook, Version: 1.0, name: my-own-gslb ist.

URL: https://<MAS_IP>/stylebook/nitro/v1/config/stylebooks?filter=name:my-own-gslb,namespace:com.citrix.adc.stylebooks,version:1.0
HTTPMETHOD: GET

Die Antwort enthält die StyleBook-Details, einschließlich des ID-Attributs.

{
  "stylebooks": [
    {
      "author": null,
      "builtin": "false",
      "builtins": "{"netscaler.nitro.config": "10.5"}",
      "deprecate": "false",
      "description": " This StyleBook is used to configure one or a number of Citrix ADCs in different sites into a GSLB setup. It is assumed that the SNIP IP on each Citrix ADC to be used by this StyleBook as the Site IP is already configured on the appliance.",
      "display_name": "HTTP/SSL LoadBalancing StyleBook",
      "filename": "my-own-gslb.yaml",
      "hide": null,
      "id": "gslb5a748d8b7684846cf6c409ad7dea8ccf",
      "imported_by": "",
      "imported_datetime": "2018-05-25 17:20:32.848902",
      "name": "my-own-gslb",
      "namespace": "com.citrix.adc.stylebooks",
      "pkg_id": "gslb5a748d8b7684846cf6c409ad7dea8ccf",
      "primary_keys": "["name"]",
      "private": "false",
      "recompile": "false",
      "schema_version": "1.0",
      "source": "LS0tIApuYW1lOiBsYgpuYW1lc…",
      "system": null,
      "tags": "",
      "tenant_id": null,
      "user_sb": "false",
      "version": "1.0"
    },
    {
      …
    }
  ]
}

Hinweis

Die obige API gibt eine Liste von StyleBooks zurück, die mit dem Filter übereinstimmen. Stellen Sie sicher, dass Sie das richtige StyleBook aus der Antwort auswählen, um die ID abzurufen.

REST-API zum Erstellen von Systembenutzern

Hinweis

Dieser Schritt ist optional.

URL: https://<MAS_IP>/nitro/v2/config/mpsuser
HTTPMETHOD: POST

Payload:
{
  "mpsuser": {
    "name": "John",
    "password": "welcome",
    "external_authentication": false,
    "enable_session_timeout": false,
    "groups": [
      "AppOwnerGroup1"
    ]
  }
}

Workflow für die Anwendungseigentümer

Ihre Benutzer müssen sich mit ihren Anmeldeinformationen als Anwendungsbenutzer anmelden. Die Benutzer müssen diese Aufgabe ausführen, um ihre eigenen DNS-Domänennamen zu erstellen und das neue GSLB-StyleBook zu verwenden.

  1. Navigieren Sie in Citrix ADM zu Netzwerke > DNS-Domänennamen.

  2. Klicken Sie auf Hinzufügen, um eine neue DNS-Domäne zu erstellen. Erstellen Sie die DNS-Domänen in Citrix ADM.

    lokalisiertes Bild

    Hinweis

    Als Administrator können Sie diese Domänennamen auch erstellen und den Benutzergruppen zuweisen.

  3. Navigieren Sie zu Anwendungen > Dashboard, und klicken Sie auf Benutzerdefinierte App definieren.

    lokalisiertes Bild

  4. Geben Sie einen Namen für die Anwendung ein, und wählen Sie eine Kategorie aus. Wählen Sie Neue Anwendung aus einem StyleBook erstellen aus und klicken Sie auf OK. Wählen Sie Mein eigenes GSLB-StyleBook aus, um die Konfiguration auf den ausgewählten Instanzen bereitzustellen.

    lokalisiertes Bild

  5. Geben Sie die Werte ein, die für alle Parameter im StyleBook erforderlich sind.

    1. Wählen Sie den Domänennamen aus der Liste aus.

    2. Fügen Sie die GSLB-Sites Ihrer Anwendung hinzu.

    3. Wählen Sie die Citrix ADC Zielinstanzen in allen GSLB-Sites aus.

    4. Klicken Sie auf Erstellen, um eine GSLB-Konfiguration zu erstellen.

      lokalisiertes Bild

    Hinweis

    Der StyleBook-Parameter DNS-Domänenname zeigt nur die Liste der DNS-Domänen an, die zum Benutzer in Citrix ADM gehören.

Citrix ADM REST-API für App-Besitzer-Workflow

REST-API für die Anmeldung bei Citrix ADM

URL: http: //<MAS_IP>/nitro/v2/config/login
HTTPMETHOD: POST

Payload:
{
  "login": {
    "username": "<USER_NAME>",
    "password": "<PASSWORD>",
    "session_timeout": 1800
  }
}

REST-API zum Erstellen von DNS-Domänennamen

URL: https://<MAS_IP>/nitro/v2/config/dns_domain_entry
HTTP METHOD: POST
PAYLOAD: {"dns_domain_entry":{"name":"app1.acme.com","description":"app1 acme domain"
}
}

REST-API zum Erstellen von Anwendungen mit StyleBook

URL: https://<MAS_IP>/nitro/v2/config/application
HTTPMETHOD: POST

Payload:
{
  "params": {
    "action": "app_discovery"
  },
  "application": {
    "id": "",
    "name": "app1",
    "app_c ategory": "ITOps",
    "stylebook_params": "{"name":"my-own-gslb","namespace":"com.citrix.adc.stylebooks","version":"1.0","configpack_payload":{"parameters":{"name":"app1","domain-name":"app1.acme.com",]"ttl":"30","algorithm":"ROUNDROBIN","protocol":"HTTP","sites":[{"name":"site1","ipaddress":"6.5.6.77","virtual-ip":"88.6.5.44","virtual-port":"80"}]},"targets":[ {"id":"72c178da-47df-4426-9acc-cd6316f92506"}, {"id":"0e4d0789-bffe-4266-ba1c-09adfc61db4e"}, {"id":"b5af4455-3f06-4f56-b0cb-3d9f868c1f94"}]}}"
  }
}

In der obigen Nutzlast:

  • Die stylebook_params enthält den Namen, Namespaces und die Version des zu verwendenden StyleBook.

  • Die configpack_payload enthält die gefüllten Parameter des StyleBook, wie in der äquivalenten GUI-Form oben gezeigt. Citrix ADM stellt sicher, dass nur DNS-Domänennamen, auf die der Benutzer Zugriff hat, als Werte für den Parameter domain-name verwendet werden können.

  • Die Ziele enthalten die Liste der NetScaler IDs, auf denen die GSLB-Konfiguration bereitgestellt wird (die NetScalers auf den GSLB-Sites).

Um die NetScaler-ID unter Angabe der Verwaltungs-IP-Adresse von NetScaler zu erhalten, können Sie die folgende Citrix ADM API verwenden:

URL: https://<MAS_IP>/nitro/v2/config/ns?filter=ip_address: 192.168.153.162
HTTPMETHOD: GET

Die Antwort-Nutzlast enthält Informationen zu diesem NetScaler, einschließlich seiner ID:

{
  "errorcode": 0,
  "message": "Done",
  ….."tenant_id": "ec0eb868-0d6b-4729-bfbd-3005dd2694c1",
  "resourceName": "",
  "ns": [
    {
      "manufacturedate": "9/30/2009",
      "is_grace": "false",
      "hostname": "youcef-ns",
      "std_bw_config": "0",
      "gateway_deployment": "false",
      "gateway_ipv6": "",
      "ha_master_state": "Primary",
      "instance_available": "0",
      "device_finger_print": "",
      "instance_state": "Down",
      "reason": "Device not reachable",
      "name": "",
      "ent_bw_available": "0",
      "description": "",
      "id": "da9ffff2-c100-45f1-a913-c542718338b2",
      "mgmt_ip_address": "192.168.153.162",
      ….
    }
  ]
}

Erstellen Sie Ihr StyleBook

Der vollständige Inhalt der Datei my-own-gslb.yaml StyleBook ist unten dargestellt: Sie können dieses benutzerdefinierte StyleBook so verwenden, wie es ist, oder passen Sie es an Ihre Bedürfnisse an, um die erforderliche GSLB-Konfiguration zu generieren. Der wichtige Parameter in diesem StyleBook namens Domain-name, der in jedem StyleBook vorhanden sein sollte, um die DNS-Namen-Funktionalität zu nutzen.

name: my-own-gslb
namespace: com.citrix.adc.stylebooks
version: "1.0"
display-name: My own GSLB StyleBook
description: This StyleBook is used to configure one or a number of NetScalers in different sites into a GSLB setup. It is assumed that the SNIP IP on each NetScaler to be used by this StyleBook as the Site IP is already configured on the appliance.
schema-version: "1.0"
import-stylebooks:
  -
    namespace: netscaler.nitro.config
    version: "10.5"
    prefix: ns
  -
    namespace: com.citrix.adc.commontypes
    version: "1.0"
    prefix: cmtypes
parameters:
  -
    name: name
    label: Application Name
    type: string
    required: true
    key: true
  
  -
    name: domain-name
    label: DNS Domain Name
    description: GSLB DNS Domain Name
    type: string
    required: true
    allowed-dynamic-values:
      source: local
      resource-type: dns_domain_entry

  -
    name: ttl
    label: TTL for the Domain
    description: Time-To-Live value (number of seconds) for the Domain
    type: number
    default: 30

  -
    name: algorithm
    label: LB Algorithm
    description: Global Load Balancing Algorithm
    type: string
    default: ROUNDROBIN
    allowed-values:
      - ROUNDROBIN
      - STATICPROXIMITY
      - SOURCEIPHASH

  -
    name: protocol
    label: Protocol
    description: The protocol of the GSLB VIP
    type: string
    default: HTTP
    allowed-values:
      - HTTP
      - FTP
      - TCP
      - UDP
      - SSL
      - SSL_BRIDGE
      - SSL_TCP
      - NNTP
      - ANY
      - SIP_UDP
      - SIP_TCP
      - SIP_SSL
      - RADIUS
      - RDP
      - RTSP
      - MYSQL
      - MSSQL
      - ORACLE

  -
    name: monitor
    label: LB Monitor
    description: Monitor to be bound to the GSLB service
    type: cmtypes::monitor

  -
    name: sites
    label: GSLB Sites
    description: Provide information about the GSLB Sites
    type: object[]
    required: true
    parameters:
      -
        name: name
        label: Site Name
        type: string
        required: true
      -
        name: ipaddress
        label: Site IP Address
        description: The IP Address of this Site. Use a SNIP IP address on the site's appliance.
        type: ipaddress
        required: true
      -
        name: public-ipaddress
        label: Site Public IP Address
        description: The Public IP Address of this Site. It NATs to the Site's IP address
        type: ipaddress
      -
        name: virtual-ip
        label: Site VIP IP
        description: The IP Address for the GSLB Service on this site (The VIP on this Site)
        type: ipaddress
        required: true
      -
        name: virtual-port
        label: Site VIP Port
        description: The port number for the GSLB Service (VIP) on this site
        type: tcp-port
        default: 80

components:
  -
    name: enable-gslb-comp
    type: ns::nsfeature
    description: Enables the GSLB feature
    meta-properties:
      action: enable
    properties:
      feature: ["GSLB", "LB"]
  -
    name: gslb-monitor-comp
    type: cmtypes::monitor
    condition: $parameters.monitor
    properties:
      monitorname: $parameters.name + "-" + $parameters.monitor.monitorname + "-gslbmon"
      type: $parameters.monitor.type
      destip?: $parameters.monitor.destip
      destport?: $parameters.monitor.destport
      httprequest?: $parameters.monitor.httprequest
      send?: $parameters.monitor.send
      customheaders?: $parameters.monitor.customheaders
      respcodes?: $parameters.monitor.respcodes
      recv?: $parameters.monitor.recv
      lrtm?: $parameters.monitor.lrtm
      secure?: $parameters.monitor.secure
      interval?: $parameters.monitor.interval
      interval_units?: $parameters.monitor.interval_units
      resptimeout?: $parameters.monitor.resptimeout
      retries?: $parameters.monitor.retries
      downtime?: $parameters.monitor.downtime
  -
    name: gslb-vserver-comp
    type: ns::gslbvserver
    description: Creates a GSLB VServer config object
    properties:
      name: $parameters.name + "-gslbvserver"
      servicetype: $parameters.protocol
      lbmethod: $parameters.algorithm
    components:
      -
        name: gslb-domain-comp
        type: ns::gslbvserver_domain_binding
        properties:
          name: $parent.properties.name
          domainname: $parameters.domain-name
          ttl: $parameters.ttl
  -
    name: gslb-site-comp
    type: ns::gslbsite
    description: Creates a GSLB Site config object
    repeat: $parameters.sites
    repeat-item: site
    properties:
      sitename: $parameters.name + "-" + $site.name + "-gslbsite"
      siteipaddress: $site.ipaddress
      publicip?: $site.public-ipaddress
    components:
      -
        name: gslb-service-comp
        type: ns::gslbservice
        description: Creates a GSLB Service
        properties:
          servicename: $parameters.name + "-" + $site.name + "-gslbservice"
          ip: $site.virtual-ip
          servicetype: $parameters.protocol
          port: $site.virtual-port
          sitename: $parent.properties.sitename
        components:
          -
            name: gslb-vserver-service-binding-comp
            type: ns::gslbvserver_gslbservice_binding
            description: Creates a Binding between the GSLB vserver and the GSLB Service
            properties:
              name: $components.gslb-vserver-comp.properties.name
              servicename: $parent.properties.servicename
          -
            name: gslb-service-monitor-binding-comp
            type: ns::gslbservice_lbmonitor_binding
            description: Creates a Binding between the GSLB service and the GSLB monitor
            condition: $parameters.monitor
            properties:
              servicename: $parent.properties.servicename
              monitor_name: $components.gslb-monitor-comp.properties.monitorname

Bereitstellen von GSLB-Konfigurationen mithilfe von DNS-Domänennamen