説明/参照:
Explanation:
ログインを追加する必要があります。
次に、データベースロールのストアドプロシージャに対するEXECUTE権限を付与すれば十分です。
データにアクセスできるようにしたいです。このユーザーにロールを追加する必要はありません。
注:データベースの周囲に複数の防御線を作成する1つの方法は、すべてのデータを実装することです。
ストアドプロシージャまたはユーザー定義関数を使用してアクセスします。あなたはすべての許可を取り消すか拒否します
テーブルなどの基になるオブジェクト、およびストアドプロシージャに対するEXECUTE権限を付与します。この
データおよびデータベースオブジェクトの周囲にセキュリティ境界を効果的に作成します。
ベストプラクティス
単純にストアドプロシージャを作成するだけでは、アプリケーションを十分に保護できません。あなたも
以下の潜在的なセキュリティホールを検討してください。
可能にしたいデータベースロールのストアドプロシージャに対するEXECUTEパーミッションを付与します。

データにアクセスします。
データベース内のすべてのロールとユーザーについて、基礎となるテーブルに対するすべての権限を取り消すか拒否します。

公共の役割を含む。すべてのユーザーはパブリックから権限を継承します。そのためにアクセス許可を拒否する
publicは、所有者とsysadminメンバーだけがアクセスできることを意味します。他のすべてのユーザーはできなくなります
他のロールのメンバーシップから権限を継承します。
sysadminまたはdb_ownerロールにユーザーまたはロールを追加しないでください。システム管理者とデータベース

所有者はすべてのデータベースオブジェクトにアクセスできます。
参照先:https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/sql/managing-permissions-
SQL Server内のwith-stored-Procedures-in