Power Queryでデータソースに接続する際、接続文字列やパスワードをクエリ内に直接記述していないでしょうか。そのままファイルを共有すると、資格情報が他人に渡ってしまうリスクがあります。特に会社PCでは、情報漏洩を防ぐために安全な共有方法を理解しておく必要があります。この記事では、Power Queryの資格情報管理の仕組みを踏まえた上で、他人にパスワードを教えずにクエリを共有する具体的な方法を、比較表や手順、失敗パターンとあわせて解説します。
【要点】この記事で確認すること
- 最初に見る場所: Power Queryエディタの「データソース設定」と「パラメーター」機能。これらを適切に使えば資格情報をクエリから分離できます。
- 切り分けの軸: 現在のクエリ内に資格情報がベタ書きされているか、パラメーターやWindows認証を利用しているか。共有前に必ず確認しましょう。
- 注意点: 会社のセキュリティポリシーに反する方法を選ばないこと。管理者と調整の上、組織のデータゲートウェイやPower BI Serviceの活用も検討してください。
ADVERTISEMENT
目次
Power Queryの資格情報管理の仕組み
Power Queryはデータソースに接続する際、ユーザーごとに資格情報をWindowsの資格情報マネージャーに保存します。クエリファイル(.pqまたはExcelブック内のクエリ)には、データソースの種類やサーバー名などの接続情報は含まれますが、パスワードそのものは通常保存されません。ただし、手動でパスワードをクエリのM言語内に記述した場合は、その文字列がクエリ定義としてファイルに含まれてしまいます。これが共有時の問題を引き起こす原因です。また、プライバシーレベル(プライベート、組織、パブリック)の設定も資格情報の振る舞いに影響します。適切なプライバシーレベルを設定しないと、データの結合時に期待通りに動作しない場合があります。
資格情報を他人に渡さず共有するための基本戦略
安全に共有するためには、資格情報をクエリから完全に分離し、各ユーザーが自分の資格情報を個別に設定できるようにすることが基本です。主な方法として、パラメーター化、Windows認証の活用、外部ファイルからの読み込み、Power BI Serviceの共有データセットの利用があります。それぞれにメリットとデメリットがあるため、以下の表で比較します。
| 方法 | メリット | デメリット |
|---|---|---|
| パラメーター化 | クエリ内に資格情報が含まれず、パラメーターの値はユーザーが入力 | パラメーターの値もファイルに保存されるため、完全な分離は難しい場合がある |
| Windows認証(統合認証) | Active Directory環境でパスワード不要、ユーザーごとに自動認証 | 組織外のユーザーやゲストでは使えない、環境依存 |
| 外部ファイルからの読み込み | 資格情報を別ファイル(設定用Excelなど)に保存し、クエリから参照 | 別ファイルの管理が煩雑、ファイル自体へのアクセス制御が必要 |
| Power BI Service共有データセット | 資格情報はサービス上で一元管理、Excelから安全に接続可能 | Power BI Pro以上のライセンスとデータゲートウェイの設定が必要 |
これらの方法を単独または組み合わせて使用することで、資格情報の漏洩リスクを大幅に低減できます。次に、実際の手順を説明します。
具体的な実装手順(例:SQL Server接続のパラメーター化)
ここでは、SQL Serverに接続するPower Queryクエリを例に、パラメーターを使って資格情報を分離する手順を紹介します。Windows認証が使える場合はそちらを優先するとより安全ですが、認証方式を選択できる場合の手順です。
- Power Queryエディタを開き、「パラメーターの管理」から新しいパラメーターを作成します。例として「ServerName」(テキスト)、「DatabaseName」(テキスト)、「UserName」(テキスト)、「Password」(テキスト、機密性を「秘密」に設定)の4つを作成します。
- 既存のクエリを開き、ソースステップの接続文字列を、作成したパラメーターを使用するように書き換えます。例えば「Sql.Database(ServerName, DatabaseName, [Credential=WindowsCredential()])」の代わりに、ユーザー名とパスワードを直接指定する場合は「Sql.Database(ServerName, DatabaseName, [Credential=Credentials.FromWindowsIntegrated()])」のようにします。ただし、パスワードを渡す場合はM関数「Credentials.FromPassword」を使いますが、パラメーターから動的に渡すようにします。
- パラメーターの初期値としてテスト用の値を設定しますが、共有する前に初期値を空欄に変更するか、パラメーターのプロパティで「必須」に設定してユーザーに入力を促します。
- クエリを閉じて適用した後、Excelファイルを保存します。この状態ではクエリ定義に資格情報は含まれていません。ただし、パラメーターの値(テスト用に設定したもの)はブック内に保存されるため、共有前にパラメーターの値をクリアする必要があります。
- パラメーターの値をクリアするには、Power Queryエディタの「パラメーターの管理」で各パラメーターの現在の値を削除し、空にします。また、パラメーターの機密性を「秘密」に設定しておくと、クエリのプロパティからパラメーター値が表示されにくくなります(完全な保護ではありません)。
注意点として、パラメーターの値はブックファイル(.xlsx)のXML内部に保存されるため、高度な解析により値が漏れる可能性があります。より堅牢にするには、パラメーターの初期値を設定せず、毎回ユーザーに入力させるか、Windows認証を使用することを検討してください。Windows認証を使用する場合、パラメーター化は不要で、クエリ側で「Windows認証を使用する」を選択するだけです。
ADVERTISEMENT
組織での共有方法(Power BI Serviceとの連携)
大規模な組織では、Power BI Serviceの共有データセットを利用する方法が推奨されます。Power BI Service上でデータソースの資格情報を一元管理し、Excelからはそのデータセットを参照する形でPower Queryを使います。この場合、Excelファイル自体には資格情報が一切含まれず、各ユーザーは自分のPower BIアカウントで認証するため、安全です。手順の概要は以下の通りです。
- Power BI Desktopでデータソースに接続し、必要な変換を加えたデータセットをPower BI Serviceに公開します。
- Power BI Service上でデータセットのデータソース設定を行い、資格情報を適切に設定します(Windows認証、Basic認証など)。
- Excelの「データ」タブから「Power BIデータセット」を選択し、公開されたデータセットに接続します。これでPower Queryが生成されます。
- Excelファイルを他のユーザーと共有する場合、各ユーザーは自分のPower BIアカウントでサインインし、必要な権限があればデータを取得できます。
管理者に確認すべきポイント: この方法を利用するには、組織でPower BI ProまたはPremiumライセンス、データゲートウェイのセットアップ、行レベルセキュリティ(RLS)の設定などが必要です。また、Power BI Serviceへのアクセス権限付与のポリシーを確認しておきましょう。
セキュリティ面での失敗パターンと対策
資格情報を安全に共有するつもりでも、よくある失敗パターンがあります。代表的なものを挙げ、その対策を紹介します。
- 失敗パターン1:クエリ内にパスワードを直書きして共有
対策:前述のパラメーター化やWindows認証に変更しましょう。既存のクエリは「詳細エディタ」で確認し、Credentials.FromPasswordなどの関数にパスワード文字列が直接書かれていないかチェックします。 - 失敗パターン2:パラメーターの初期値に本番パスワードを設定したまま共有
対策:共有前には必ずパラメーターの値をクリアし、初期値を空かダミーにします。また、パラメーターの機密性を「秘密」に設定しても値はブック内に残ることを認識しておきましょう。 - 失敗パターン3:Windows認証が使える環境でBasic認証を使用している
対策:Active Directory環境であれば、データソースの認証方式をWindows認証に変更します。これにより、パスワードのやり取りが不要になり、各ユーザーのAD資格情報で認証されます。 - 失敗パターン4:共有フォルダに置いたPower Queryファイルにパスワードを埋め込んでいる
対策:共有フォルダのアクセス権限を適切に設定するだけでなく、クエリ自体にパスワードを含めないようにします。どうしても必要な場合は、別途暗号化された設定ファイルから読み込む方法を検討します。
よくある質問(FAQ)
- Q: パラメーターでパスワードを設定しても、クエリにパスワードが残らないのですか?
A: パラメーターの値はブックファイルに保存されます。完全に残さないためには、パラメーターの初期値を設定せず、ユーザーに毎回入力させるか、Windows認証を使用します。 - Q: Windows認証が使えない環境ではどうすればいいですか?
A: パラメーター化に加えて、資格情報を外部の安全なストレージ(Azure Key Vaultなど)から取得する方法が考えられますが、Power Query単体では難しく、Power Automateなどの組み合わせが必要になる場合があります。組織のIT部門に相談しましょう。 - Q: クエリを複数の人で使うとき、資格情報はどう同期すればいいですか?
A: 各ユーザーが自分の資格情報を個別に設定する前提であれば、同期は不要です。もし全員が同じサービスアカウントを使う場合は、パラメーター化して一箇所で管理するか、Power BI Serviceの共有データセットを利用します。 - Q: パラメーターの値を変更してもクエリが更新されないのはなぜですか?
A: パラメーターの値を変更した後、クエリエディタで「最新の情報に更新」を実行するか、テーブルを右クリックして「更新」を選択してください。また、パラメーターがクエリのソースで使用されていることを確認します。
まとめ
Power Queryでデータソースにアクセスする際、資格情報をクエリから分離することは、情報漏洩を防ぐために欠かせません。パラメーター化やWindows認証の採用、Power BI Serviceの共有データセットの利用など、状況に応じた方法を選択しましょう。共有前には必ずクエリ内にパスワードが直接書かれていないか確認し、パラメーターの値も適切に管理してください。組織のセキュリティポリシーに従い、必要に応じて管理者の指導を仰ぐことで、安全なクエリ共有を実現できます。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
