Вы абсолютно правы, SecureString не дает вам никаких преимуществ, когда вам нужно передать строку в управляемый API, например, установить ConnectionString.
Это действительно разработано для безопасной связи с безопасными неуправляемыми API.
Microsoft теоретически может рассмотреть возможность расширения объекта SqlConnection для поддержки безопасной ConnectionString, но я думаю, что они вряд ли сделают это, потому что:
SecureString действительно полезна только в клиентском приложении, где, например, пароль строится посимвольно из пользовательского ввода, при этом весь пароль не находится в управляемой строке.
В такой среде чаще используется проверка подлинности Windows для подключений к SQL Server.
На сервере существуют другие способы защиты учетных данных SQL Server, начиная с ограничения доступа к серверу авторизованным администраторам.
2012
Microsoft сделал улучшение SqlConection объект для поддержки безопасного ConnectionString путем передачи SqlCredential до нового SqlConnection.Credential свойство:
SecureString pwd = AzureVault.GetSecretStringSecure("ProcessPassword");
SqlCredential = new SqlCredential("Richard", pwd)
connection.Credential = cred;
К сожалению, нет других DbConnection потомок (например, OdbcConnection, OleDbConnection, OracleConnection, EntityConnection, DB2Connection) поддерживает это.