RESTful API Infrastructure & Interoperability Services Supporting Documentation - Last Modified March 10th, 2021 - Meditech
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
RESTful API Infrastructure & Interoperability Services Supporting Documentation Last Modified March 10th, 2021
Table of Contents *Click the sec on tle to jump to the desired page. Table of Contents 1 Overview 3 Notes 3 Requirements 4 API Server(s) 4 Cache Server 4 Database Server 4 TCP Proxy Service(s) 5 Load Balancer/Proxy 5 SSL Cer ficate(s) 6 Evalua on Task 6 DNS Entries 6 Configura on Diagrams 8 Clinical Decision Support Mechanism (CDSM) for AUC (Vendor such as NDSC) Op mum Configura on 8 Minimum CDSM for AUC Suggested Configura on 9 TCP Proxy Op mum Configura on 10 Minimum TCP Proxy Suggested Configura on 11 Connec vity 12 Outbound Traffic 12 Inbound Traffic (All Clients) 13 Proxy - SSL Termina on 13 Proxy - SSL Bridging 14 Proxy - TCP Proxy 14 Inbound Traffic (Trusted Clients) 15 Load Balancer/Proxy Configura on 16 Header Inser on 16 IPs and Ports 16 Health Check 17 Trusted Proxies 17 Security 17 The Flow 17 Layers 18 Terms 19 Applica on Server/Service 19 API Server/Service 19 ACL 19 MEDITECH 2020 - 1
Blacklis ng 19 Client ID 19 Client Secret 19 DoS 20 End to End Encryp on (E2EE) 20 Environment 20 MITM 20 Quota 20 Resource 20 Scope 20 TCP Proxy Service 20 Token 20 Whitelis ng 20 Installa on Valida on Guide 21 Important Note 21 Check DNS 21 Check Services 21 Check Connec vity 22 Change Log 24 MEDITECH 2020 - 2
Overview The RESTful API Infrastructure allows MEDITECH and third party vendor so ware to securely access the MEDITECH EHR through APIs. Interoperability Services (or IOPS) — which is a component of the RESTful API Infrastructure and installed on the same machine(s) — adds a set of APIs to meet Meaningful Use Stage 3 (MU3) and Imaging Appropriate Use Criteria (AUC) requirements. RESTful API is independent from any other web products or interoperability interfaces MEDITECH offers and requires dedicated hardware. Notes ● "Proxy" and "Load Balancer" are used interchangeably throughout this document and always refer to the appliance or service which will proxy the traffic to the RestAPI Infrastructure server(s). MEDITECH 2020 - 3
Requirements Although some hardware and so ware requirements are listed below, the full and detailed list can be found here. API Server(s) An op mal RESTful API Infrastructure configura on consists of two or more servers running the RESTful API services as well as Interoperability Services. The cluster helps to ensure be er performance and failover protec on for the Infrastructure. However, as a minimum configura on, organiza ons can start out with one API server. More servers can be added based upon usage and performance needs. Note: IIS is not used in this configura on and should not be installed on these servers. The RESTful API Infrastructure performs the role of a web server. Purpose These servers host the web services which clients connect to. Support MEDITECH provides support. Hardware/So ware Please review the TECH task outlining your hardware configura on proposal (HCP). Cache Server The Redis service, which MEDITECH will install on the Cache Server, reduces latency and increases performance on requests by reducing the number of hits to the database. The cache is memory-only, meaning it is never persisted to disk. It is suggested that the Redis service run on its own server (as seen here). However, site may choose to have MEDITECH install the Redis service on one of the API servers (as seen here) if addi onal servers cannot be obtained. If combining the two servers, it is suggested you increase the RAM available to that API server by 4GB, bringing the total to 8GB for that one API server. Please review the related security documenta on to secure the Redis installa on. It can be found here: RESTful API & IOPS Resources - Security. Purpose This server caches responses and also acts as a messaging service between API Servers. Support MEDITECH provides support. Hardware/So ware Please review the TECH task outlining your hardware configura on proposal (HCP). Database Server A supported database is required. The RESTful API Infrastructure supports: ● MSSQL ● MySQL ● MariaDB MEDITECH 2020 - 4
Important: MySQL 8.0.4 introduces a backwards incompa bility with the client library. Please use MySQL 8.0.3 if MySQL is your database of choice. We are working to get the client library updated but do not currently have a meline for when the changes will be completed and tested. Important: MariaDB and MySQL versions have varying maximum upload sizes (called "max_allowed_packet" in the configura on). Please ensure the maximum packet size is increased to at least "32M", which is 32 megabytes. This can be done by upda ng the appropriate "my.ini" or "my.cnf" file located in the installa on directory and restar ng MariaDB/MySQL. This issue does not affect installa ons using MSSQL databases. Purpose The database stores the configura on and run me details of the RESTful services. It does not store pa ent data nor does it store any other data that is stored in the MEDITECH database. Support Sites should choose the database they are most comfortable with as MEDITECH does not provide support for maintaining or configuring the database service(s). TCP Proxy Service(s) A TCP Proxy Service is connected to by an API Service when processing APIs whose data originates in the MEDITECH Expanse Pla orm. In the same manner that a cluster of API Servers is recommended to improve performance and fault tolerance, two or more TCP Proxy Services are also recommended. Purpose These services proxy connec ons from the API Server(s) to processes running MEDITECH Expanse so ware. Support MEDITECH provides support. Hardware/So ware Please review the TECH task outlining your hardware configura on proposal (HCP). Load Balancer/Proxy A load balancer or proxy is required to sit in front of the API Server(s). Purpose This appliance is important for the stability and security of the system. Some of the reasons are: ● When in one of the two suggested configura ons (more below): ○ It allows the customer to mi gate or prevent SSL vulnerabili es and to configure the SSL parameters according to their regulatory and corporate requirements ○ It allows the customer to install and maintain their SSL cer ficates in a single loca on instead of across mul ple servers/services ● Using DNS round-robin for failover does not provide graceful failover to the client - the client so ware needs to be smart enough to retry the connec on using another IP. Depending on the client technology, this can take seconds or minutes. Whereas failover with a load balancer or proxy is nearly instantaneous. ● When configured for SSL Termina on, this reduces the CPU load on the RESTful API Infrastructure servers. Support Sites are expected to rely on their IT staff or vendor support for configuring and maintaining the load balancer/proxy. MEDITECH provides guidance but cannot furnish sites with step-by-step instruc ons on how to configure their load balancer/proxy. MEDITECH 2020 - 5
SSL Certificate(s) The site must purchase one or more SSL cer ficates from a trusted cer ficate authority to be installed on their proxy or load balancer. As there will be two hostnames per MRI or HIM database(See DNS Entries below), it is suggested that the site purchase a wildcard or SAN (Subject Alterna ve Name) cer ficate to keep costs down. Sites may purchase a cer ficate per hostname. Self-signed cer ficates may ONLY be used to secure the connec on between the load balancer/proxy and the RESTful services and only when configured for SSL Bridging. Evaluation Task Customers preparing for MU3 or AUC ini a ves should have a Hardware Evalua on Task opened under TECH to provide a system review and detailed server specifica ons. If you do not currently have a task open, contact your account manager/HCIS coordinator or technical account manager (TAM) to request an evalua on. Please allow at least 2 weeks for comple on — upon receipt of your evalua on, an addi onal 6-8 weeks should be allo ed to procure and set up new hardware. DNS Entries A DNS entry is needed for the API and Applica on end-point for each MRI or HIM database (both TEST and LIVE). These records should all point to VIPs on your Load Balancer - you may use one or mul ple VIPs when configuring your Load Balancer. Another DNS entry is needed for the TCP Proxy Service. This record should point to the IPs of all the TCP Proxy servers. It is suggested that the API services use different VIP(s) from Applica on services. This makes it easier to restrict access to the Applica ons to only those clients that are on your network. If they shared a VIP, your firewall would need to be able to do deep packet inspec on and disallow access to the hostnames for the Applica on services when accessed over the Internet. Example: If you have 3 LIVE rings with 1 HIM database each and 3 TEST rings with 1 HIM database each, we would expect the following DNS entries: mtrestapis-live01.CUSTOMER-DOMAIN mtrestapis-live02.CUSTOMER-DOMAIN mtrestapis-live03.CUSTOMER-DOMAIN mtrestapis-test01.CUSTOMER-DOMAIN mtrestapis-test02.CUSTOMER-DOMAIN mtrestapis-test03.CUSTOMER-DOMAIN mtrestapps-live01.CUSTOMER-DOMAIN mtrestapps-live02.CUSTOMER-DOMAIN mtrestapps-live03.CUSTOMER-DOMAIN mtrestapps-test01.CUSTOMER-DOMAIN mtrestapps-test02.CUSTOMER-DOMAIN mtrestapps-test03.CUSTOMER-DOMAIN If you are configuring the TCP Proxy Service, a single DNS entry should be configured that will point to all the TCP Proxy server IPs: mtres cpproxy.CUSTOMER-DOMAIN When not exposing the Applica ons to the Internet, only the "mtrestapis-*" entries would resolve on your public DNS. MEDITECH 2020 - 6
Purpose The entries allow the infrastructure to differen ate requests as it is possible that an iden fier may be reused in one or more databases. Addi onally, the API and Applica on services run on different ports and within different processes because the workloads are significantly different Support Sites are expected to rely on their IT or vendor support for maintaining their DNS entries. MEDITECH 2020 - 7
Configuration Diagrams These diagrams show the servers and connec ons. A more detailed list of protocols and ports are listed in the Connec vity sec on. Clinical Decision Support Mechanism (CDSM) for AUC (Vendor such as NDSC) Optimum Configuration MEDITECH 2020 - 8
Minimum CDSM for AUC Suggested Configuration MEDITECH 2020 - 9
TCP Proxy Optimum Configuration MEDITECH 2020 - 10
Minimum TCP Proxy Suggested Configuration MEDITECH 2020 - 11
Connectivity Outbound Traffic This is traffic origina ng from the RESTful API server(s). Protocol Des na on Port Usage TCP Database Server(s) Database Dependent This is used to communicate with the database that stores the RESTful API Infrastructure configura on. TCP Cache Server Configurable This is used to cache resources, Default: 6379 removing the need to talk to the back-end or database in some circumstances. TCP TCP Proxy Service(s) Configurable This is used to communicate with the TCP Proxy Service when handling API requests that require direct access to the MEDITECH Expanse database. HTTP over TCP One of the RESTful API Configurable This is used to communicate with the Infrastructure Servers Default: 24387 IOPS Monitor service to obtain environmental se ngs. Note: this connec on is no longer needed a er IOPS is updated to v1.5.0 or above. HTTP over TCP MIS File Library Configurable This is used to obtain clinical data. Server(s) Default: 24388 HTTP over TCP BKG Job Machines for Configurable This is used to speak with the MEDITECH Each HCIS Default: 24400 database. HTTPS over TCP AUC Provider 443 This is used for the Appropriate Use Criteria for Advanced Diagnos c Imaging (AUC) MU3 requirement.1 HTTPS over TCP Iden ty Provider 443 The Infrastructure must be able to communicate with the Iden ty Provider (e.g., Google) in order to validate asser ons. 1 Not all customers will use AUC. There are mul ple cer fied decision support products such as NDSC's CareSelect. MEDITECH 2020 - 12
Inbound Traffic (All Clients) This is traffic des ned for the RESTful API services from clients both on-network and off (i.e., internet traffic). This includes user desktops and other MEDITECH servers. There are mul ple possible configura ons for traffic coming into the RESTful API services. Proxy - SSL Termination Please use this sec on when configuring your proxy or load balancer for SSL Termina on. It is our sugges on that sites terminate SSL at their proxy/load balancer for the best performance. Important: The VIP on the proxy should be accessible from the internet and all networks on site. Protocol Source Des na on Port Usage HTTP over TCP Proxy Res ul API Services Configurable This will respond to API Default: 80 requests that originate from the proxy. Requests directly to the server or from an untrusted proxy will be issued a redirect to HTTPS. HTTP over TCP Proxy Res ul Applica on Configurable This will respond to Services s) Default: 8081 Applica on requests that originate from the proxy. Requests directly to the server or from an untrusted proxy will be issued a redirect to HTTPS. HTTPS over TCP Anywhere Proxy Configurable This is the connec on clients Default: 443 make to access the API and/or Applica on services proxied by the load balancer/proxy. MEDITECH 2020 - 13
Proxy - SSL Bridging This configura on is for organiza ons that do not have a trusted network between the proxy and the RESTful API servers. Important: The VIP on the proxy should be accessible from the internet and all networks on site. Protocol Source Des na on Port Usage HTTPS Proxy Res ul API Services Configurable This will respond to API Default: 443 requests. HTTPS Any Client Proxy 443 This is the connec on clients make to access the API services proxied by the load balancer/proxy. HTTPS Proxy Res ul Applica on Configurable This will respond to Services server(s) Default: 8888 Applica on requests. HTTPS Any Client Proxy 443 This is the connec on clients make to access the Applica on services proxied by the load balancer/proxy. Proxy - TCP Proxy This configura on is for organiza ons that will be configuring real- me APIs that require direct access to the MEDITECH Expanse database. This should be configured using DNS (see DNS Entries). Protocol Source Des na on Port Usage TCP API Server(s) TCP Proxy Configurable This is used by the API Service(s) Server(s) to handle API requests that require direct access to the MEDITECH Expanse database. MEDITECH 2020 - 14
Inbound Traffic (Trusted Clients) These are connec ons from MEDITECH applica ons running on your network. These connec ons MUST NOT be internet-accessible. They must share the same IP/VIP. Protocol Source Des na on Port Usage HTTP over TCP Proxy Res ul API 24431 Serves web pages to the server(s) MEDITECH pla orms. Note: this connec on is no longer needed a er IOPS is updated to v1.4.0 or above. HTTP over TCP Trusted Client Proxy 24431 This is the connec on clients make to access the webpages proxied by the load balancer/proxy. Note: this connec on is no longer needed a er IOPS is updated to v1.4.0 or above. HTTP over TCP RESTful API RESTful API Configurable This is used to communicate Server(s) Server(s) Default: 24387 with the IOPS Monitor service to obtain environmental se ngs. Note: this connec on is no longer needed a er IOPS is updated to v1.5.0 or above. MEDITECH 2020 - 15
Load Balancer/Proxy Configuration MEDITECH cannot provide step-by-step instruc ons for configuring your load balancer or proxy. This is because every vendor is different and uses different names to reference the same thing. There are two suggested configura ons: 1. SSL Termina on - this is when the connec on to the appliance is encrypted with SSL but the connec on from the appliance to the RESTful services is not encrypted. 2. SSL Bridging - this is when the connec on to the appliance is encrypted with SSL and the connec on from the appliance to the RESTful services is encrypted, some mes with a different cer ficate and TLS configura on. SSL Bridging would indicate an End to End Encryp on (E2EE). SSL Passthrough (where the appliance operates at the TCP level instead of at the SSL level) is not a suggested configura on as it directly exposes the SSL implementa on included in the RESTful services to the Internet. The danger, as outlined above, is that MEDITECH will be unable to patch and deliver fixes for SSL vulnerabili es quickly enough. Header Insertion In both suggested configura ons, the appliance should be configured to add the "X-Forwarded-For" header to the request before proxying to the RESTful services. The header should be populated with the original client's IP. This allows the RESTful services to log the IP of the origin of the request. Without this header, all requests would appear to be from the appliance's IP. In an SSL Termina on configura on, an addi onal header is needed. "X-Forwarded-Proto" needs to be added to the request. It must have the sta c value of "h ps", without the quotes. These headers allow the RESTful services to handle requests appropriately and helps in securing the connec on. You can read more about these headers on Mozilla's web-site: ● X-Forwarded-For ● X-Forwarded-Proto IPs and Ports A single IP, some mes called a VIP, can be used for all environments. If using the same VIP for both API and Applica on environments, the load balancer will need to be configured to look at the Host header of the HTTP requests to route API requests to the API service port and Applica on requests to the Applica on service port. Our sugges on, however, is to use one VIP for all API environments and one for all Applica on environments. Please note: all ports listed below may be different in your configura on due to differences in your environment and network. Please consult your TECH or Applica on specialist to determine if the default ports are being used. In an SSL Bridging configura on, the appliance should proxy HTTPS/443 -> HTTPS/443 for the API VIP and HTTPS/443 to HTTPS/8888 for the Applica on VIP. In an SSL Termina on configura on, the appliance should proxy HTTPS/443 -> HTTP/80 for the API VIP and HTTPS/443 to HTTP/8081 for the Applica on VIP. It is not suggested to configure the appliance to proxy HTTP/80 -> HTTP/80. HTTP/80 is never used by a func oning client and there is no need to allow them to connect on this port. The site may, op onally, configure their appliance to issue a redirect from HTTP/80 to HTTPS/443. If HTTP/80 is proxied, the services will issue a redirect to HTTPS/443 itself. When configuring the TCP Proxy Service, the appliance should proxy TCP/6000 -> TCP/6000 for the TCP Proxy Service server IPs. MEDITECH 2020 - 16
Important: ports used by the services in your installa on may be different than the examples listed above. Please refer to the TECH task tracking the delivery of the RestAPI Infrastructure. Health Check The RESTful services support a standard HTTP health check: HEAD / HTTP/1.1 If the service is func oning appropriately, it will return a "200 OK". It is not required to configure a health check but doing so will allow the appliance to detect and react to outages be er. Trusted Proxies The RESTful service’s trusted proxies MUST be configured to include the load balancer’s IP or IP range. Failure to do so will cause incorrect informa on to be recorded in the RESTful service audit logs and devices will be iden fied incorrectly when evalua ng quotas and lockouts. This, in turn, can lead to the system becoming unusable. Note: if there are mul ple load balancers and/or proxies used, all of their IPs must be listed in Trusted Proxies. Security The RESTful API Infrastructure has mul ple layers of security. This document aims to describe the security model. The Flow In order to put the layers into context, it is necessary to describe the flow of a typical applica on. Authoriza on 1. The applica on redirects the user to our authoriza on endpoint. 2. The authoriza on endpoint does one of two things: a. Display the available authen ca on realms (if there is more than one), in which case it redirects the user to the iden ty provider a er a realm is selected. b. Redirect the user to the only iden ty provider if there is a single realm. 3. The authen ca on completes2 and the user is redirected back to a special endpoint on our service that processes the authen ca on informa on. This includes a step where the service (not the client) contacts the provider to validate the informa on, thereby mi ga ng a MITM a ack. 4. The infrastructure evaluates whether or not the applica on and user combina on has access to the requested scopes. It does this by confirming: a. All scopes in the request are valid. b. The user passes the ACLs for all scopes. c. The applica on passes the ACLS for all scopes. 5. An authoriza on code is generated and the user is redirected back to a registered endpoint belonging to the applica on. 6. The applica on makes a request to the RESTful API Infrastructure to trade the authoriza on code for an access token. The connec on is authen cated by the applica on providing its OAuth2 client ID and secret. 7. The applica on can now make requests to APIs on the behalf of the user. API Invoca on 1. The applica on makes an HTTPS request to the RESTful API Infrastructure and includes the access token. 2. The infrastructure determines if the scopes granted to the token during authoriza on cover the API being invoked. If not, an error is returned. 3. The infrastructure then determines if there are any quota lockouts — and if there are, returns an error. 2 What happens on the iden ty provider is outside the scope of this document. MEDITECH 2020 - 17
4. A second level of authoriza on based on resource ownership is performed using the iden ty informa on ed to the token. a. For example, Pa ent A is considered to be the owner of their own pa ent resource. Only the pa ent (or others specifically granted access such as providers or healthcare proxies) can read the medical record for that pa ent. This does not mean the pa ent can do everything with their record, but only what a pa ent is allowed to do — in this example, obtain a copy of it. 5. The invoca on — whether allowed, denied, or failed due to error — is logged in our audit table. Layers Firewall The firewall protects against many threats such as DoS. In some environments, a firewall may be used to restrict access to the APIs over the internet to a set of well-defined sources. Load Balancer The load balancer performs mul ple func ons in this configura on. It returns an error if the request is malformed (i.e., not a valid HTTP request) and is used to offload SSL/TLS, allowing organiza ons to manage their cer ficates in a central loca on (instead of propaga ng cer ficates to mul tudes of servers). It also makes se ng SSL/TLS parameters, such as minimum protocol version and cipher suites, easier without the need to update or reconfigure the RESTful API Infrastructure. One addi onal feature is the ability to scale out the RESTful API Infrastructure to handle more requests or to increase performance by balancing requests across the nodes in an installa on. TLS/SSL All requests to the RESTful API Infrastructure must be over HTTPS and must be protected with a cer ficate from a trusted authority (not a self-signed cer ficate). Applica on Registra on In order for an applica on to be able to obtain a token, they must first be added to the configura on by an administrator. This generates a client ID and client secret, which is then used by that applica on when obtaining tokens. The ID and secret do NOT grant access to APIs and are only used during authoriza on. Please consult the Interoperability group to onboard applica ons. Important: The client secret should only be transmi ed and stored securely. DO NOT send it via email if at all possible. User Login MEDITECH requires the use of an Iden ty Provider (IdP) to authen cate pa ents (or their representa ves) and providers. The IdP your organiza on deploys must support the OpenID Connect or SAML 2.0 protocol. Alterna vely, support for using your MEDITECH Pa ent Portal as an IdP has been added - please consult your Interoperability specialist to determine if you meet the minimum so ware requirements for this op on. Before selec ng an Other Vendor IdP for your organiza on, please work with MEDITECH so we can confirm its compa bility with RESTful API Infrastructure. Note: The most immediate use case for the RESTful API Infrastructure and IOPS is to meet MU3 requirements, which will only use the IdP to authen cate pa ents. Future use cases will include allowing providers to use applica ons to access data. At that me, an IdP will need to be able to authen cate providers. This may mean a single IdP or mul ple IdPs depending on your needs. OAuth2 The OAuth2 standard is used to secure the APIs from unauthorized access. MEDITECH 2020 - 18
Scope ACLs Scopes have their own set of ACLs which prevent applica ons or users from obtaining a token with those scopes. Some scopes have a default ACL that denies token genera on (i.e., whitelis ng), while most other scopes have a default ACL that allows it (i.e., blacklis ng). Which method MEDITECH chooses for a scope depends on the intended usage of the scope. The evalua on of whether or not a token may be generated with the requested scopes is done during the Authoriza on stage a er user authen ca on. This is because ACLs can also be used to deny/allow based on the authen cated user in addi on to the authen cated applica on. The Admin Panel can be used to view and configure these ACLs. Quotas Quotas allow a site to limit the number of requests made within a period of me. This helps alleviate strain on the MEDITECH database if an applica on is misbehaving. It also acts as another layer of security by temporarily locking out an applica on or user from accessing APIs. Audi ng All requests to the RESTful API Infrastructure are audited. This enables iden fying what data was accessed by bad actors, should a breach of a user's or applica on's creden als occur. It could also be used by analy cs tools to report on suspicious ac vity. We are s ll developing the tools that can be used to review the audit entries. Terms Application Server/Service The RestAPI Infrastructure listens on a second port which allows it to easily serve up integrated applica ons. These are web applica ons created by MEDITECH's development teams and includes the Admin Panel, which is used to configure the infrastructure. API Server/Service The primary purpose of the RestAPI Infrastructure is to expose APIs to trusted/authen cated clients. This is also typically used to reference the physical server(s) or VM(s) on which the RestAPI Infrastructure is running. ACL Access Control List: A mechanism of defining who and what can access which resources. Blacklisting A way of gran ng access where access is allowed, unless an excep on is made. To put it into an analogy: "Anyone may use the coffee pot except children under 12." This is the opposite of whitelis ng. Client ID This is the unique iden fier given to an OAuth Client, otherwise known as an applica on or service. It can be thought of as the username for an applica on. Client Secret This is a secret value given to an OAuth Client. When paired with the Client ID, it allows an applica on to authen cate as part of the authoriza on flow. MEDITECH 2020 - 19
DoS Denial of Service: An a ack against a server that leads to clients being unable to connect or receive responses due to exhaus ng the resources of the server (CPU, IO throughput) or network. End to End Encryption (E2EE) Would indicate a secure connec on between both endpoints of the communica on, normally using an asymmetric encryp on protocol. It is a way to prevent a man in the middle a ack. Environment Environments come in two flavors: 1. API - this defines the hostname that links to a specific MRI or HIM database 2. Applica on - this defines the hostname that links an applica on to a specific API environment, thereby allowing that applica on to query the specific MRI or HIM database Environments are one-for-one with the DNS entries defined by the site and allow the RestAPI Infrastructure to differen ate between API traffic (and which MRI/HIM database that API should resolve to) and Applica on traffic (and which API environment it uses). MITM A man-in-the-middle a ack is one where a client's requests are sent to an insecure server that acts as a proxy to the real server. Quota A quota is a way of limi ng the number of requests that can be made within a period of me. Quotas should be based on real-world applica on workflows. Resource A resource is any file or uniquely iden fiable data, such as a pa ent record or an order. Scope A scope defines a set of related APIs. TCP Proxy Service A TCP Proxy Service is connected to by an API Service when processing API whose data originates in the MEDITECH Expanse Pla orm. This service is responsible for maintaining a pool of M-AT Magic Console processes and proxying TCP connec ons. Token A token is a string used to provide iden ty without exposing usernames and passwords to applica ons. Whitelisting A way of gran ng access where access is denied, unless an excep on is made. To put it into an analogy: "No one may access the server room except network engineering." This is the opposite of blacklis ng. MEDITECH 2020 - 20
Installation Validation Guide This valida on guide is meant to assist both the IT staff at site and MEDITECH staff iden fy connec vity and/or configura on issues. Important Note "HOSTNAME" (referenced below) is the DNS record the site has configured to be used with the RESTful API and IOPS services. This is not the name of a server. Please refer to the configura on task for informa on on the hostnames — there may be many. Check DNS On Network 1. Log on to any device on network. 2. Launch the command prompt. 3. Execute "nslookup HOSTNAME." (See Important Note above.) 4. If an error is reported, internal DNS is not configured properly and must be resolved by site's network engineers. 5. Confirm the HOSTNAME resolves to the VIP on the load balancer. If it does not, DNS is not configured properly and must be resolved by site's network engineers. 6. Repeat these steps for all hostnames/environments. Off Site's Network 1. Load this link in your browser: h ps://mxtoolbox.com/DNSLookup.aspx. 2. Enter in the HOSTNAME as you did for step #3 above, and click the orange "DNS Lookup" bu on. 3. If an error is reported, external DNS is not configured properly and must be resolved by site's network engineers. 4. Confirm the IP is NAT'd to the VIP on the load balancer. If the resolved address is incorrect, DNS is not configured properly and must be resolved by site’s network engineers. 5. Repeat these steps for all hostnames/environments. Check Services 1. Log on to the API server. 2. In the Start menu, select Control Panel. 3. From the Control Panel window, select Administra ve Tools. 4. Launch the "services" and verify the following services are installed and in a "Running" status. Note: The "(xxx)" below in each service name is a unique iden fier for the installa on. a. MEDITECH IOPS Monitor (xxx) i. Note: this connec on is no longer needed a er IOPS is updated to v1.5.0 or above. b. MEDITECH IOPS MSF (xxx) c. MEDITECH Rest API Node Service (xxx) d. MEDITECH Rest API Redis Service (xxx) "MEDITECH IOPS Monitor (xxx)" will only be deployed on one of the API servers. 5. Open the browser. 6. Navigate to h p://localhost. 7. If the browser reports "Connec on Reset," "Connec on Aborted," or "Connec on Timed out," then the RESTful API services are not working correctly. 8. If IOPS services version is < 1.4.0 (ex. 1.3.0): a. Navigate to h p://localhost:24431. b. If the browser reports "Connec on Reset," "Connec on Aborted," or "Connec on Timed out," then the IOPS services are not working correctly. 9. If there are mul ple API servers, repeat steps 1-9 for each one. 10. Log on to the server with the IOPS File-Explorer service installed. 11. In the Start menu, select Control Panel. 12. From the Control Panel window, select Administra ve Tools. MEDITECH 2020 - 21
13. Launch the "services" and verify the "MEDITECH IOPS Explorer" service is installed and in a "Running" status. Check Connectivity Many of the steps below use the browser to confirm connec vity. Due to differences in how browsers display the data returned by the RESTful API Infrastructure, you may not actually see the page indicated in the instruc ons. We suggest using Chrome or Postman to verify connec vity as both of these display the Infrastructure's error messages instead of displaying their own. On Network RESTful API Services 1. From any device on-network, open the browser. 2. Navigate to h ps://HOSTNAME. 3. If HOSTNAME is for an API environment, you should see this displayed in the page: {"resource":"v1/resource/error/_version/1/","detail":"Not Found"} or {"resource":"v1/resource/error/_version/1/","detail":"could not route request"} i. If you do not, then connec vity is blocked from that device, and the site will need to review their firewall and load balancer logs. ii. IE will not display the response. Instead, it will display a generic error page that the resource was not found or there was a bad request. You can confirm the content of the response by opening the developer tools, naviga ng to the Network tab and reviewing the Response body for the request. 4. If HOSTNAME is for Applica on environments, you should either: be redirected to the h ps://HOSTNAME/home/ page and shown a list of available applica ons, or, if defined for the specific environment, defaulted into the applica on defined. i. If you do not, then connec vity is blocked from that device, and the site will need to review their firewall and load balancer logs. AUC Viewer & CCDA Valida on Report (required for v1.3.x and less IOPS installa ons) 1. From any device on-network, open the browser. 2. Navigate to h p://HOSTNAME:24431. 3. If the browser reports anything but a 404, then connec vity is blocked from that device, and the site will need to review their firewall and load balancer logs. Mul -Service Framework (MSF) Service 1. From the ISWEB server, open the browser. 2. Navigate to h p://{monitorHost:port} where "monitorHost" is the FQDN of the server and "port" is the port that the Monitor service is listening on. a. This is required for v1.4.x and less IOPS installa ons only. For v1.5.x and above skip to step 5. 3. You should see this displayed in the page: {"connection": "success"} 4. If you do not, then connec vity is blocked from that device, and the site will need to review their firewall logs. 5. Navigate to h p://{explorerHost:port} where "explorerHost" is the FQDN of the server and "port" is the port that the File-Explorer service is listening on. 6. You should see this displayed in the page: {"connection": "success"} 7. If you do not, then connec vity is blocked from that device, and the site will need to review their firewall logs. 8. Repeat steps 5-7 to all File-Explorer services. 9. Navigate to h p://{pla ormHost:port} where "pla ormHost" is the FQDN of the server and "port" is the port that the Pla orm service is listening on. MEDITECH 2020 - 22
10. If the browser reports anything but a 403 or 404, then connec vity is blocked from that device, and the site will need to review their firewall logs. 11. Repeat steps 9-10 to all Pla orm services. 12. Repeat steps 1-11 on all ISWEB servers. File-Explorer Service (required for v1.4.x and less IOPS installa ons) 1. From the server with File-Explorer Service installed, open the browser. 2. Navigate to h p://{monitorHost:port} where "monitorHost" is the FQDN of the server and "port" is the port that the Monitor service is listening on. 3. You should see this displayed in the page: {"connection": "success"} 4. If you do not, then connec vity is blocked from that device, and the site will need to review their firewall logs. 5. Repeat steps 1-4 on all servers with the File-Explorer service installed. Off Network RESTful API Services 1. From any device off-network, open the browser. 2. Navigate to h ps://HOSTNAME. 3. If HOSTNAME is for an API environment, you should see this displayed in the page: {"resource":"v1/resource/error/_version/1/","detail":"Bad Request"} i. If you do not, then connec vity is blocked from that device, and the site will need to review their firewall and load balancer logs. 4. If HOSTNAME is for Applica on environments, you should either: be redirected to the h ps://HOSTNAME/home/ page and shown a list of available applica ons, or, if defined for the specific environment, defaulted into the applica on defined. i. If you do not, then connec vity is blocked from that device, and the site will need to review their firewall and load balancer logs. ii. If the Applica ons should only be available on network, you should not be able to connect (the browser should show "Connec on Timed Out" or "Connec on Refused"). AUC Viewer & CCDA Valida on Report (required for v1.3.x and less IOPS installa ons) 1. From any device off-network, open the browser. 2. Navigate to h p://HOSTNAME:24431. 3. The browser should report that the connec on could not be made, failed, or was rejected. If you get a response from the server, like a 404, then the applica on has been exposed to the internet. The site must modify their firewall to disallow access on port 24431 from the Internet. MEDITECH 2020 - 23
Change Log March 10, 2021 ● Updated DNS Entries sec on for TCP Proxy setup to replace men on of load balancer VIP with TCP Proxy IPs. ● Updated various other references to TCP Proxy setup with the updated DNS guidance. July 10, 2020 ● Added link to Security documenta on for Redis configura on. ● Added more informa on to "SSL Bridging" defini on. May 26, 2020 ● Added note on configuring trusted proxies in Load Balancer/Proxy Configura on. January 10, 2020 ● Replace NDSC vendor references with Clinical Decision Support Mechanism (CDSM) for appropriate use criteria (AUC). ● Updated and added configura on diagrams. ● Added documenta on regarding TCP Proxy Service. July 9, 2019 ● Clarified documenta on by changing "Database" to "Database Server". May 8, 2019 ● Added a note on upda ng max_allowed_packet for older MariaDB/MySQL versions. January 31, 2019 ● Updated Security Layers User Login sec on to indicate support for SAML 2.0 Idp and MEDITECH Pa ent Portal Idp. December 10, 2018 ● Updated Valida on Guide sec on to indicate change in API server (≥1.5.0) response when naviga ng to the root URL from a browser. December 7, 2018 ● Updated Database sec on to indicate incompa bility with MySQL 8.0.4 or above. October 19, 2018 ● Updated ports under "Load Balancer/Proxy Configura on" to be in line with connec vity tables earlier in this document. August 20, 2018 ● Updated connec vity tables for v1.5.0 release of Interoperability Services. ● Removed "PostgreSQL" from documenta on. MEDITECH 2020 - 24
You can also read