vlookups と Index/Match 関数を使用してソース Excel ファイルからデータを読み取る Excel テンプレートがあります。エンド ユーザーがソース データ ファイル/シートにアクセスできないようにする方法はありますか? たとえば、ソース ファイルをリモートの場所に保存し、そこから vlookups を読み取るようにします。
2 に答える
利用できるリソースによっては、設定した制限をユーザーが回避するのを防ぐのが難しい場合があります。データがデータベース テーブルにある場合でも、ユーザーが Excel テンプレートの外部でクエリを実行できないように対策を講じる必要があります。あなたの状況はわかりませんが、理想的には、適切なソリューションを設計するのを手伝ってくれる人 (つまり、データベース管理者、情報セキュリティ、バックエンド開発者) がいるでしょう。
そうは言っても、MS SQL Server を使用するというあなたのアイデアは良い方法だと思います。SQL クエリを使用してアクセスを制限する代わりに、ストアド プロシージャを作成できます。詳細については、このリンクを参照してください: SQL Server でストアド プロシージャを使用してアクセス許可を管理する
また、ユーザーが他のユーザー ID を割り出し、勝手にデータにアクセスすることも心配です。ユーザー ID を使用して情報にアクセスできないように、マッピング テーブルを用意することで、何らかの保護を実装できます。テーブルは次のようになります。
- 列: randomKey、userId、creationDate
- randomKey は x 桁の乱数/文字列です
- creationDateTime はタイムスタンプであり、タイムアウトの目的で使用されます
誰かがユーザー ID を必要とするときはいつでも、マッピング テーブルにレコードを追加するストアド プロシージャを実行します。ユーザー ID を入力すると、プロシージャによってレコードが作成され、キーが返されます。テンプレートに入力するキーをユーザーに提供します。別のストアド プロシージャがキーを受け取り、(マッピング テーブルを使用して) ユーザー ID に解決し、要求された情報を返します。これらのキーは期限切れになります。それらは 1 回だけ使用することも (手順によってマッピング テーブルからレコードが削除される)、タイムアウトを使用することもできます (creationDateTime が x 時間/日よりも古い場合、データは返されません)。
キーについては、Mark Ransom が、ロジックのベースとなるランダム ID を作成するための興味深いソリューションを共有しました: 6 桁の一意の番号を生成する
大変な作業のように思えますが、データに機密性がある場合は、より堅牢なプロセスを構築する価値があります。もっと良い方法があると思いますが、少しでも参考になれば幸いです。