Syteview™ - Design & Architecture
   
   
Microsoft® and Syteview® together provide you with the tools you need to design a web publishing system that meets your needs.  Whatever your needs: redundancy, scalability or security, ALWAYS SECURITY, Syteview lets you do it your way.  From a single server running your Progress database, Microsoft SQL Server and your Microsoft IIS Server to a distributed network of SQL Servers connected via Microsoft SQL Server Replication Services each providing data to multiple Microsoft IIS web servers, Syteview lets you design it your way.

    The following examples are provided in order to give you a good starting point in working out the design of your system.


Design #1 – Simple and Quick

The easiest way to get Syteview up and publishing quickly is to run everything, Progress database server, Microsoft SQL Server and Microsoft IIS Server, all on one computer.  This simplifies setting up the ODBC connections between the various parts of the system and the secure connection between the SQL Server and the IIS Server.  This design does put your Progress database at risk if you expose this system to the internet, but for a quick and easy (but not secure) intranet or for setting up a test environment this is a good beginning configuration.

For this configuration you will start with a Progress database server in good working order on a Windows NT or 2000 system.  Install the IIS Server if it wasn’t installed by default with your operating system and then install the SQL Server.   Syteview requires very few special configuration options, so choose the default options when installing these servers unless you have your own reasons not to.

Once you have the SQL and IIS Servers installed you will need to install and configure the Syteview components, see the Syteview Installation Guide.  Next you need to create the Syteview ODBC connections to the SQL Server and the Progress database server.  Aftering installing the SQL and IIS servers and creating the ODBC connections to them, make sure to apply the latest service patches and security hotfixes.  

At this point you should then be ready to open up your web browser and point it to your Syteview web site and display some data.  After you are done playing with a few of the Syteview data lookup web pages you can take a look at the DataLinks and DataGrabbers pages for information on keeping the SQL Server in-sync with your Progress database server.



Design # 2 – Protecting Your Progress Server

The first design example is simple, it’s quick, and it works, but it is not secure.     Since all three servers are running on the same computer your Progress database server and your SQL Server are exposed to everyone and everything that has access to your IIS Server.  Even on an small intranet this can be dangerous.   One of the first improvements you should consider making to your design is adding a second Progress server.  This will allow you to separate your production Progress server from the second Progress server that is pushing data out to the SQL Server.  This change has the added benefit of leaving your production Progress server completely untouched.   (see Figure 2)

At regular intervals (nightly, weekly, etc.) backup copies of the physical database files from your production Progress server are copied over to the second Progress server (the one that is also hosting your SQL and IIS Servers).  You should copy your database files between the two Progress servers using a non-routable network protocol, NetBEUI for example, and if you are exposing the IIS Server to the internet a properly configured firewall should be placed between the two Progress servers.  For those truly paranoid among us, consider removing the network connection and use tapes or another form of removable media to copy the database files between the two Progress servers.   This will create a complete disconnect between your production Progress server and the outside world.  In today’s hacker and virus infested world, paranoia is not such a bad thing.



Design # 3 – Further Protection for Your Progress Server

The next design improvement you may wish to implement starts with the same configuration as Design #2 above, except that the SQL Server and the IIS Server are no longer hosted on the same computer that hosts the second Progress database server.  The SQL and IIS Servers are moved onto a third computer.  By putting these two programs on a third computer you can setup a private IP subnet between the second and third computers that further protects your secondary Progress server from any intrusion from the internet.  (see Figure 3)

Note: A private IP subnet is by definition disconnected from the internet (private IP numbers are not routed through internet routers) and any computer with only a private IP number will not be able to communicate through the internet. Reference: Private IP Addresses

By configuring this private subnet with only the computer hosting the secondary Progress server and the computer hosting the SQL/IIS Server as members your secondary Progress server will be isolated from the internet.

The computer running the SQL Server and the IIS Server will need to have two IP numbers.  One private IP number that is used to communicate with your secondary Progress server and a second public IP number, assigned by your Internet Service Provider, that allows the IIS Server to communicate on the internet or in the case of an intranet, a second private IP number that allows your IIS Server to communicate with your internal network.

A further benefit of this design is that it allows you to place another firewall between your secondary Progress server and the SQL/IIS Servers. A VLAN can also be configured to even further isolate these two computers from the internet and from your internal network.

A VLAN is a Virtual LAN setup on a network switch that logically segments your network into separate networks.  If you setup one VLAN that includes your end users and the original Progress server they will be able to access their usual Progress applications.  If you setup a second VLAN that includes only your two Progress servers you will be able to copy the physical database files from the original Progress server to the second Progress server that Syteview uses.  If you setup a third VLAN that includes only the second Progress server and the computer running the SQL Server and the IIS Server they will be able to communicate.  Finally, if you setup a fourth VLAN that includes the computer running the SQL Server and the IIS Server and the router, hub, switch, proxy server or firewall that connects to the internet the IIS Server will be able to talk on the internet.   Together these four VLANs will allow communications between each of the computers that need to communicate, but will prevent any connection between your Progress servers and the internet.



Design # 4 – Protecting your SQL Server

This design is similar to Design # 3 with the additional improvement of moving the IIS Server onto a fourth computer.  A private IP subnet, or in certain configurations a non-routable network connection, is used to connect the IIS Server and the SQL Server.  A firewall and a VLAN can also be used between these two computers to further isolate the SQL Server.

This configuration not only protects and isolates your SQL Server from the internet, but it also provides an additional layer of defense between the internet and your Progress servers. A layered defense is always a good idea.  (see Figure 4)

Unfortunately there are several drawbacks associated with this configuration that need to be addressed.  First is the matter of performance. Separating the SQL Server and the IIS Server slows down the communications between the two servers.  Not as much as you might expect because of the addition of a network connection between them, but mostly due to the necessity of authenticating each request for data twice.   The data request must be authenticated first by the IIS Server when it receives the original request from the end user’s web browser and then the data request must be authenticated a second time by the SQL Server when it receives the request from the IIS Server.

This necessity to authenticate the data request a second time by the SQL Server can, depending on the level of security you require, lead to a complicated set of problems.  If you are willing to authenticate your users and their data requests only once on the IIS Server, and if you don’t need the fine grained control of data access provided by the SQL Server then you can prevent the SQL Server from initiating the second authentication request by setting up one local user account on the SQL Server that has the ability to run each of the Syteview stored procedures and has the ability to retrieve data from each of the tables in the Syteview database.   This local user account must be matched by a local user account on the IIS Server of the exact same name that has been setup to be the Anonymous User account (the account used by the IIS Server for anonymous access).  You can then create a non-trusted connection between the IIS Server and the SQL Server by disabling the default Named Pipes connection and instead setting up a TCP/IP connection.

This configuration will allow you to restrict access to your data by using NTFS permissions on the web pages on your IIS Server while allowing your SQL Server to fulfill all data requests from the IIS Server without the second authentication process.

Unfortunately, not everyone is able to forego the SQL Server authentication.  The authentication that occurs on the IIS Server verifies that each user has the right to request a set of data (by allowing them to open a particular web page on the IIS Server), but that data set may be derived from more than one database table.   This may not allow you to limit the access to your data to a sufficient degree and it also requires you to keep track of exactly which web pages access which database tables. These problems are alleviated by the SQL Server’s ability to specify access rights for each individual table and in some cases for individual records in a table.

Other reasons that might require you to authenticate data requests on the SQL Server include:
  1. the ability to restrict users to a particular set of records from a table (for example restricting a customer to viewing only his own orders or restricting a user to only a particular set of ledger accounts).
  2. the ability to direct different users to different stored procedures (which return different records) depending upon their username.
  3. the requirement to log users’ database access.
  4. the desire to provide another layer of protection for your data, separate from the protection provided by your internet exposed IIS Server.
Authenticating data requests on the SQL Server when the SQL Server is not hosted on the same computer as the IIS Server is unfortunately considerably more difficult to setup and administer than when the SQL Server and the IIS Server are on the same computer.  You have to either do it the Microsoft way which entails:
  1. Setting up and administering an Active Directory domain.
  2. Using SQL Server 2000 or above on a Windows 2000 Server.
  3. Using IIS Server 5.0 or above on a Windows 2000 Server.
  4. Using Digital Certificates or Microsoft’s Message Digest Authentication to authenticate users on the IIS Server.
Or you can do it the Syteview way which entails:
  1. Setting up a non-trusted (usually TCP/IP) connection between the IIS Server and the SQL Server instead of the normal trusted (usually Named Pipes) connection.
  2. Using a special data control (ASP2SQLRemote.dll) which allows you to preserve each user’s name as a data request is transferred from the IIS Server to the SQL Server.
  3. Using a special stored procedure (SyteCheck) which checks each user’s permission to access a database table or a stored procedure before passing off the validated request to the proper stored procedure.



Design # 5 – Adding Scalability and Redundancy

This design uses the same basic configuration design as Design #4 above, but instead of just one IIS Server pushing data out to the internet, multiple computers each hosting an IIS Server are connected to the SQL Server.  This gives you the same benefits as Design #4, ie. multiple layers of defense and the additional processing power provided by putting the SQL Server on its own computer, but it also gives you the ability to add processing power as you need it by adding additional IIS Servers.  (see Figure 5)

After extensive lab and real-world testing, we have come up with a ball park figure of a single SQL Server being able to support up to six IIS Servers.  This is only a ball park figure and depends greatly on how your users actually use the system.  More data intensive lookups obviously put a heavier load on the SQL Server and may limit your configuration to fewer IIS Servers per SQL Server, but we have identified the IIS Server as being a bottleneck relative to the SQL Server and this configuration will allow you to alleviate this problem.

An additional benefit of this configuration is IIS Server redundancy.  If one IIS Server is down, the other IIS Servers will still be able to fulfill users’ requests.

This design has the same requirements as Design #4, ie. Active Directory, SQL Server 2000, IIS Version 5, and Message Digest Authentication or Digital Certificates unless, of course, you use the Syteview’s special data control (ASP2SQLRemote.dll) and stored procedure (SyteCheck).



Design #6 – Multiple SQL Servers

This design uses the same basic configuration as Design #5 above with the addition of multiple SQL Servers.  Each computer hosting an instance of SQL Server is isolated and protected from exposure to the internet using the same techniques discussed above.  Each SQL Server uses a copy of the same database which can be kept synchronized by either Microsoft’s SQL Server Replication Services or by using Syteview’s DataGrabbers and DataLinks.  (see Figure 6)

You get the same benefits that you get with the previous design, ie. multiple layers of defense and additional processing power.  You also have the same drawback as above, ie. Active Directory, SQL Server 2000 and IIS Version 5 are required unless you use Syteview’s special data control and stored procedure.

Additional benefits of this design include SQL Server redundancy and the ability to set up a distributed data network with geographically remote SQL and IIS Servers using either Microsoft’s SQL Server Replication Services or Syteview’s DataGrabbers and DataLinks.

One possible drawback that needs to be considered: a distributed data network using SQL Server Replication Services will usually require professional design and installation services and a commitment to ongoing management resources.  Syteview’s DataGrabbers and DataLinks are also capable of powering a distributed data network, but they may also require outside help during the design and installation phase.



Conclusion

Syteview gives you the tools you need to design a data publishing system that meets your needs for performance, security, scalability, redundancy and location.  Features from each of the basic designs described above can be incorporated into your own design.  Always make sure that you understand the security ramifications of your design and test your design thoroughly before placing it on your network.