Specifying Credential and Connection Information for Report Data Sources (SSRS)
A report server uses credentials to connect to external data sources that provide content to reports or recipient information to a data-driven subscription. You can specify credentials that use Windows Authentication, database authentication, no authentication, or custom authentication. When sending a connection request over the network, the report server will either impersonate a user account or the unattended execution account. For more information about the security context under which a connection request is made, see Data Source Configuration and Network Connections further on in this topic.
Credentials are also used to authenticate users who access a report server. Information about authenticating users to a report server is provided in another topic. To learn more, see Planning for Services, Accounts, and Connections.
The connection to an external data source is defined when you create the report. It can be managed separately after the report is published. You can specify a static connection string or an expression that allows users to select a data source from a dynamic list. For more information about how to specify a data source type and connection string, see Data Connections, Data Sources, and Connection Strings (SSRS).
If the report retrieves data from a remote database server, verify the following:
The credentials provided to the database server are valid. If you are using Windows user credentials, make sure that the user has permission to the server and database.
Ports used by the database server are open. If you are accessing SQL Server relational databases on external computers, or if the report server database is on an external SQL Server instance, you must open port 1433 and 1434 on the external computer. Be sure to restart the server after you open ports. For more information, see How to: Configure a Windows Firewall for Database Engine Access.
Remote connections must be enabled. If you are accessing SQL Server relational databases on external computers, you can use SQL Server Configuration Manager tool to verify that remote connections over TCP are enabled.
The data sources that provide content to reports are usually hosted on remote servers. To retrieve data for a report, a report server must connect to the server using a set of credentials that you provide in advance or that are obtained at run time. When configuring a data source, you can specify credentials in the following ways:
Prompt the user for credentials.
Use Windows integrated security.
Use no credentials.
The network environment determines the kinds of connections you can support. For example, if the Kerberos version 5 protocol is enabled, you might be able to use the delegation and impersonation features available in Windows Authentication to support connections across multiple servers. If your network does not support these security features, you will need to work around connection constraints. If delegation and impersonation are not enabled, Windows credentials can be passed across one computer connection before they expire. A user connection from a client computer to a report server computer counts as the first connection. If the user opens a report that retrieves data from a remote server, that login counts as a second connection and will fail if you specified the connection to use integrated security when delegation is not enabled.
If multiple connections are required to complete a round trip from the client computer to an external report data source, choose from the following strategies to make the connections succeed.
Enable impersonation and delegation features in your domain so that credentials can be delegated to other computers without limit.
Use stored credentials or prompted credentials to query external data sources for report data. The credentials can be either a Windows domain account or a database login.
When you configure a report data source connection to use prompted credentials, each user who access the report must enter a user name and password to retrieve the data. This approach is recommended for reports that contain confidential data. Prompted credentials can be used only on reports that run on demand. Prompted credentials can be a Windows account or a database login. To use Windows Authentication, you must select Use as Windows credentials when connecting to the data source. Otherwise, the report server passes credentials to the database server for user authentication. If the database server cannot authenticate the credentials that you provide, the connection will fail.
Windows Integrated Security
When you use the Windows Integrated Security option, the report server passes the security token of the user accessing the report to the server hosting the external data source. In this case, the user is not prompted to type a user name or password. This approach is recommended if impersonation and delegation features are enabled. If these features are not enabled, you should only use this approach if all the servers that you want to access are located on the same computer.
You can store the credentials used to access an external data source. Credentials are stored in reversible encryption in the report server database. You can specify one set of stored credentials for each data source used in a report. The credentials you provide retrieve the same data for every user who runs the report.
Stored credentials are recommended as part of a strategy for accessing remote database servers. Stored credentials are required if you want to support subscriptions, or schedule report history generation or report snapshot refreshes. When a report runs as a background process, the report server is the agent that executes the report. Because there is no user context in place, the report server must get credential information from the report server database in order to connect to a data source.
The user name and password that you specify can be Windows credentials or a database login. If you specify Windows credentials, the report server passes the credentials to Windows for subsequent authentication. Otherwise, the credentials are passed to the database server for authentication.
How to Grant "Allow log on locally" Permissions to Domain User Accounts
If you use stored credentials to connect to an external data source, the Windows domain user account must have permission to log on locally. This permission allows the report server to impersonate the user on the report server and send the request to the external data source as that impersonated user.
To grant this permission, do the following:
On the report server computer, in Administrative Tools, open Local Security Policy.
Under Security Settings, expand Local Policies, and then click User Rights Assignment.
In the details pane, right-click Allow log on locally and then right-click Properties.
Click Add User or Group.
Click Locations, specify a domain or other location that you want to search, and then click OK.
Enter the Windows account for which you want to allow interactive login, and then click OK.
In the Allow log on locally Properties dialog box, click OK.
Verify that the account you selected does not also have deny permissions:
Right-click Deny log on locally and then right-click Properties.
If the account is listed, select it and then click Remove.
Using Impersonation with Stored Credentials
You can also use credentials to impersonate the identity of another user. For SQL Server databases, using the impersonation options sets the SETUSER function.
Do not use impersonation for reports that support subscriptions or that use schedules to generate report history or refresh a report execution snapshot.
You can configure a data source connection to use no credentials. Microsoft recommends that you always use credentials to access a data sources; using no credentials is not advised. However, you may choose to run a report with no credentials in the following cases:
The remote data source does not require credentials.
The credentials are passed in the connection string (recommended only for secure connections).
The report is a subreport that uses the credentials of the parent report.
Under these conditions, the report server connects to a remote data source using the unattended execution account that you must define in advance. Because the report server does not connect to a remote server using its service credentials, you must specify an account that the report server can use to make the connection. For more information about creating this account, see Configuring the Unattended Execution Account.
The following table shows how connections are made for specific combinations of credential types and data processing extensions. If you are using a custom data processing extension, see Specifying Connections for Custom Data Processing Extensions.
Context for network connection
Data Source Types
(SQL Server, Oracle, ODBC, OLE DB, Analysis Services, XML, SAP NetWeaver BI, Hyperion Essbase)
Impersonate the current user
For all data source types, connect using the current user account.
Impersonate the specified user
For SQL Server, Oracle, ODBC, and OLE DB: connect using the impersonated user account.
For Analysis Services: Beginning with SQL Server Reporting Services Service Pack 2, supported on Windows Server 2003 using domain accounts. Not supported on Windows XP and earlier operating systems.
Impersonate the unattended execution account or the service account.
(Reporting Services removes administrator permissions when sending the connection request using the service identity).
For SQL Server, Oracle, ODBC, and OLE DB:
Append the user name and password on the connection string.
For Analysis Services:
The connection succeeds if you are using the TCP/IP protocol, otherwise it fails.
Fail the connection on the report server if database credentials are used.
Impersonate the unattended execution account.
For SQL Server, Oracle, ODBC, and OLE DB:
Use the credentials defined in the connection string. The connection fails on the report server if the unattended execution account is undefined.
For Analysis Services:
Always fail the connection if no credentials are specified, even if the unattended execution account is defined.
Connect as Anonymous User if the unattended execution account is defined; otherwise, fail the connection.
You can set credentials in your code to control access to reports and to the report server. For more information, see Data Sources and Connection Methods.