Security Concerns and Best Practices For A SAS Grid
Security Concerns and Best Practices For A SAS Grid
Security Concerns and Best Practices For A SAS Grid
The following white paper will identify security issues and the best practices for
addressing security issues when accessing nodes in a SAS grid using the capabilities of
SAS/CONNECT. In fact, these same issues apply for a CONNECT client connecting to
and accessing a single remote machine as well as a CONNECT client connecting to and
accessing many remote machines in a grid. The information presented here applies
primarily to using a Windows platform as the remote server. The information will
eventually be expanded to include other server platforms as well.
The following table summarizes how to run SAS/CONNECT with a high, medium, and
low level of security. The sections that follow describe the pros and cons of each level of
security and how each of the commands and options enable this level of security.
A high level of security protects the transmission of any userid/password values as well
as the transmission of any sensitive data across the network. It also prevents
unauthorized access to remote servers and the maximum level of control over the SAS
processing that gets distributed to any of the remote servers. This prevents unauthorized
access and usage of any other resources on the remote servers outside of the SAS
environment. This high level of security comes at a higher cost of administration.
Like the generic telnet daemon, the spawner is a daemon that listens on a specific port for
incoming requests for SAS connections. For a high level of security, you should use the
spawner instead of the telnet daemon because it allows the administrator of the server
machine to completely control the SAS environment that gets created and to provide as
much security with that environment as is desired. This is accomplished as follows:
• The spawner should be run as a service by specifying the INSTALL option on the
spawner command as shown in the table above. This facilitates administration of
the spawner, ensures that the spawner is running with authentication as well as
any other options deemed necessary by your administrator, and provides
robustness to the environment.
• The spawner should be run in a secured mode which requires user authentication
to the server machine in order for the client to even be able to gain access to the
server machine in order to invoke SAS. Authentication is on by default if the
spawner is run as a service (using the INSTALL option) but off by default if the
spawner is not run as a service.
• The spawner supports inheritance by default which means that the spawner listens
on a single tcp/ip port and the SAS session that gets created just inherits a socket
from this same port for the actual communications of the SAS session. This
facilitates the use of a firewall between the client and server machines since only
a single port needs to be defined to the firewall.
• If both the client and the server machines are windows machines, then it is
possible to use SSPI for the authentication and bypass the need for
username/password authentication to the remote server. The NOSSPI option has
been added to the SAS 9.1 spawner in order to prevent automatic authentication
of clients that are members of “trusted” domains. The NOSSPI option is used in
the example in the table above. Use of this option does require SAS 9.1.
• In Version 8, the userid and password needed to authenticate the SAS session on
the remote machine must either be interactively entered at execution time or
stored in a file. Starting in SAS 9.1, PROC PWENCODE can be used to
obfuscate the userid and password in a flat file or stored SAS program to prevent
clear text storage.
All users who connect to the spawner must have the “Log on as batch job”
advanced right. Therefore, it is typically not possible for a client to just connect
to any arbitrary remote pc since it requires that the administrator grant this user
right prior to establishing a connection.
• Additionally, a SHELL option is being added to the 9.2 spawner so that execution
of operating system commands will be prevented by default by the spawner rather
than needing to create a .BAT file to include the SAS invocation with the –
NOXCMD SAS startup option..
You could also use access control to better protect the machine. If the spawner is using
security, the user's working directory will be set to the user's home folder. Perhaps you
could set up special directories for the userid/password being used to connect and allow
access only to these directories.
• The spawner should be run as a service by specifying the INSTALL option on the
spawner command as shown in the table above. This facilitates administration of
the spawner, ensures that the spawner is running with authentication as well as
any other options deemed necessary by your administrator, and provides
robustness to the environment.
• The spawner should be run in a secured mode which requires user authentication
to the server machine in order for the client to even be able to gain access to the
server machine in order to invoke SAS. Authentication is on by default if the
spawner is run as a service (using the INSTALL option) but off by default if the
spawner is not run as a service.
All users who connect to the spawner must have the “Log on as batch job”
advanced right. Therefore, it is typically not possible for a client to just connect
to any arbitrary remote pc since it requires that the administrator grant this user
right prior to establishing a connection
A low level of security makes the environment easier to configure, easier to maintain, and
easier for clients to connect to machines on the network. If you have a trusted
environment and set of users, this is the recommended way to run SAS/CONNECT.
• The spawner should be run as a service by specifying the INSTALL option on the
spawner command as shown in the table above. This facilitates administration of
the spawner and provides robustness to the environment.
• Use the USERID and PASSWORD options in order to specify a username with
which to run the SAS process. This is necessary because a userid/password is not
supplied by the client since the spawner is running unsecured. In addition, this
userid must have the “Log on as batch job” advanced right on the remote server
because this is the userid associated with the remote SAS process.
No additional options are recommended for the spawner invocation; sacrificing security
in order to provide the greatest degree of flexibility for client connections.