機械学習で SQL Server のセキュリティに関する考慮事項Security considerations for machine learning in SQL Server

適用対象: ○SQL Server (Windows のみ)×Azure SQL Database×Azure SQL Data Warehouse ×Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (Windows only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

この記事は、管理者や設計者は、留意ください machine learning のサービスを使用する場合に、セキュリティの考慮事項を一覧表示します。This article lists security considerations that the administrator or architect should bear in mind when using machine learning services.

適用されます: SQL Server 2016 の R Services、SQL Server 2017 機械学習のサービスApplies to: SQL Server 2016 R Services, SQL Server 2017 Machine Learning Services

ネットワーク アクセスを制限するのにファイアウォールを使用します。Use a firewall to restrict network access

既定のインストールで Windows ファイアウォール ルールが使用する外部のランタイム プロセスからのすべての発信ネットワーク アクセスをブロックします。In a default installation, a Windows firewall rule is used to block all outbound network access from external runtime processes. パッケージをダウンロードすると、悪意のある可能性があるその他のネットワーク呼び出しからは、外部のランタイム プロセスを防ぐためにファイアウォール ルールを作成する必要があります。Firewall rules should be created to prevent the external runtime processes from downloading packages or from making other network calls that could potentially be malicious.

別のファイアウォール プログラムを使用している場合は、ローカル ユーザー アカウントまたはユーザー アカウント プールによって表されるグループ用のルールを設定して、外部のランタイムの送信ネットワーク接続をブロックする規則を作成することもできます。If you are using a different firewall program, you can also create rules to block outbound network connection for external runtimes, by setting rules for the local user accounts or for the group represented by the user account pool.

R、または Python ランタイムで無制限のネットワーク アクセスを防ぐために Windows ファイアウォール (または別のファイアウォール) を有効にすることを強くお勧めします。We strongly recommend that you turn on Windows Firewall (or another firewall of your choice) to prevent unrestricted network access by the R or Python runtimes.

リモート計算コンテキストでサポートされる認証メソッドAuthentication methods supported for remote compute contexts

R Services (データベース内)R Services (In-Database) 間の接続を作成するときに、Windows 統合認証と SQL の両方のログインをサポートしている SQL ServerSQL Serverとリモート データ サイエンス クライアント。 supports both Windows Integrated Authentication and SQL logins when creating connections between SQL ServerSQL Server and a remote data science client.

たとえば、ラップトップ コンピューターで R ソリューションを開発しており、SQL Server コンピューターに対して計算を実行するとします。For example, say you are developing an R solution on your laptop and want to perform computations on the SQL Server computer. 使用して、R で SQL Server データ ソースを作成すると、 rx関数との接続文字列を定義する、Windows 資格情報に基づいています。You would create a SQL Server data source in R, by using the rx functions and defining a connection string based on your Windows credentials.

変更すると、計算コンテキスト_Windows アカウントに必要なアクセス許可がある場合は、すべての R コードを SQL Server コンピューターで実行するよう、SQL Server コンピューターにラップトップからです。When you change the _compute context from your laptop to the SQL Server computer, all R code is executed on the SQL Server computer, if your Windows account has the necessary permissions. さらに、R コードの一部として実行された SQL クエリは、管理者の資格情報も実行されます。Moreover, any SQL queries executed as part of the R code are run under your credentials as well.

このシナリオでは、SQL ログインの使用はサポートされてもします。The use of SQL logins is also supported in this scenario. ただし、これは混合モード認証を許可する SQL Server インスタンスを構成することが必要です。However, this requires that the SQL Server instance be configured to allow mixed mode authentication.

暗黙の認証Implied authentication

一般に、 SQL Server Trusted LaunchpadSQL Server Trusted Launchpad外部スクリプトの実行時を起動し、独自のアカウント下でスクリプトを実行します。In general, the SQL Server Trusted LaunchpadSQL Server Trusted Launchpad starts the external script runtime and executes scripts under its own account. ただし、外部のランタイムは、ODBC 呼び出しを行う場合、 SQL Server Trusted LaunchpadSQL Server Trusted Launchpad ODBC 呼び出しが異常終了しないようにするコマンドを送信したユーザーの資格情報の権限を借用します。However, if the external runtime makes an ODBC call, the SQL Server Trusted LaunchpadSQL Server Trusted Launchpad impersonates the credentials of the user that sent the command to ensure that the ODBC call does not fail. これは暗黙の認証と呼ばれます。This is called implied authentication.


暗黙の認証には、Windows ユーザー アカウントを含むグループ、ワーカーの成功 (既定では、 SQLRUserGroup)、インスタンス、およびこのアカウントがへのアクセス許可を付与する必要がありますの master データベースにアカウントが必要インスタンスに接続します。For implied authentication to succeed, the Windows users group that contains the worker accounts (by default, SQLRUserGroup) must have an account in the master database for the instance, and this account must be given permissions to connect to the instance.

グループSQLRUserGroup Python スクリプトを実行しているときにも使用します。The group SQLRUserGroup is also used when running Python scripts.

一般に、なくすることより大規模なデータセットを事前に SQL Server に移動 RODBC または別のライブラリを使用してデータを読み取るしようとしています。 お勧めします。In general, we recommend that you move larger datasets into SQL Server beforehand, rather than try to read data using RODBC or another library. また、SQL Server クエリまたはビュー、プライマリ データ ソースとして使用、パフォーマンス向上のためです。Also, use a SQL Server query or view as your primary data source, for better performance.

たとえば、SQL サーバーから、トレーニング データ (通常、最大のデータ) を取得し、外部ソースからの要因の一覧を取得する可能性があります。For example, you might get your training data (typically the largest data) from SQL Server and get a list of factors from an external source. ほとんどの ODBC データ ソースからデータを取得するリンク サーバーを定義することができます。You can define a linked server to get data from most ODBC data sources. 詳細については、次を参照してください。リンク サーバーを作成です。For more information, see Create a linked server.

外部データ ソースへの ODBC 呼び出しへの依存関係を最小限に抑えるに可能性がありますも個別のプロセスとしてデータ エンジニア リングを実行およびテーブルの結果を保存または T-SQL を使用します。To minimize dependency on ODBC calls to external data sources, you might also perform data engineering as a separate process, and save the results in a table, or use T-SQL. SQL の vs でのデータ エンジニア リングの良い例は、このチュートリアルを参照してください。R: T-SQL を使用してデータの機能を作成するです。See this tutorial for a good example of data engineering in SQL vs. R: Create data features using T-SQL.

保存時の暗号化はサポートされていませんNo support for encryption at rest

Transparent Data Encryption (TDE)に送信するか、外部スクリプトの実行時から受信したデータはサポートされていません。Transparent Data Encryption (TDE) is not supported for data sent to or received from the external script runtime. その理由は、SQL Server のプロセスの外部 R (または Python) を実行します。したがって、外部のランタイムによって使用されるデータは、暗号化、データベース エンジンの機能では保護されません。The reason is that R (or Python) runs outside the SQL Server process; thus, data used by the external runtime is not protected by the encryption features of the database engine. この動作は、データベースからデータを読み取り、コピーを作成する SQL Server コンピューターで実行されているその他のクライアントと違いはありません。This behavior is no different than any other client running on the SQL Server computer that reads data from the database and makes a copy.

その結果、TDER または Python のスクリプトで使用するすべてのデータまたは永続化された中間結果をディスクに保存されるデータに適用します。As a consequence, TDE is not applied to any data that you use in R or Python scripts, or to any data saved to disk, or to any persisted intermediate results. ただし、他の種類の暗号化など、ファイルまたはフォルダー レベルで、Windows BitLocker 暗号化またはサード パーティ製の暗号化の適用を引き続き適用されます。However, other types of encryption, such as Windows BitLocker encryption or third-party encryption applied at the file or folder level, still apply.

場合、 Always Encrypted、外部のランタイムには、暗号化キーへのアクセスはありません。 スクリプトにそのため、データを送信できません。In the case of Always Encrypted, external runtimes do not have access to the encryption keys; therefore, data cannot be sent to the scripts.


Machine learning のスクリプトを実行するためのユーザー アカウントをプロビジョニングする方法と、サービスの管理についての詳細については、次を参照してください。構成 Advanced Analytics Extensions を管理およびです。For more information about managing the service, and about how to provision the user accounts used to execute machine learning scripts, see Configure and manage Advanced Analytics Extensions.

一般的なセキュリティ アーキテクチャの詳細についてを参照してください。For an explanation of the general security architecture, see: