問題タブ [application-role]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用できないプールされた SqlConnection の検出
sp_setapproleを使用して SqlConnection にアプリケーション ロールを設定しようとすると、Windows イベント ログに次のエラーが表示されることがあります...
接続を開いたプリンシパルがその後新しいセキュリティ コンテキストを想定し、偽装されたセキュリティ コンテキストで接続をリセットしようとしたため、接続が切断されました。このシナリオはサポートされていません。Books Online の「偽装の概要」を参照してください)。
...そして、アプリケーションで一致する例外がスローされます。
これらはプールされた接続であり、接続プールがアプリの役割と互換性がない時期がありました。実際、Microsoft からの古いアドバイスは、接続プールを無効にすることでした(!!)。プールに戻す前に接続を消去します。
これらのエラーは、(理由は不明ですが) sp_unsetapprole が閉じられて接続プールに返される前に接続で実行されなかった場合に発生すると考えられます。この接続がプールから返されると、sp_approle は失敗する運命にあります。
この例外をキャッチして処理することはできますが、差し迫った障害を検出し、例外 (およびイベント ログのメッセージ) を完全に回避したいと考えています。
例外を発生させずに問題を検出することはできますか?
考えやアドバイスを歓迎します。
c# - 例外が発生する前に、例外を引き起こす条件を検出するにはどうすればよいですか?
私はこの質問にうまく対応できなかったので、問題を実証するためにこの可能な限り単純なテスト ケースを作成しました。
以下のコードでは、接続を使用する前に接続が使用できないことを検出できますか?
KABOOM は、Windows イベント ログにエラーとして現れます。
接続を開いたプリンシパルがその後新しいセキュリティ コンテキストを想定し、偽装されたセキュリティ コンテキストで接続をリセットしようとしたため、接続が切断されました。このシナリオはサポートされていません。Books Online の「偽装の概要」を参照してください。
...さらにコードの例外。
setAppRole は、接続にアプリケーション ロールを設定する簡単な方法です。これに似ている...
実際のコードでは、接続を閉じる前にsp_unsetapproleを使用しようとしますが、常に保証されるとは限りません (継承されたバグのあるマルチスレッド アプリ)。いずれにせよ、kaboom を発生させる前にそれを検出できると期待するのは妥当と思われます。
sql-server - LINQ2SQL データ コンテキストを特定の SQL アプリケーション ロールに制限する
SQL Server では、アプリケーション ロール セキュリティを使用できます。これにより、たとえば、特定のアプリケーションから発生した特定の権限を付与できます。
sp_SetAppRole() を実行してアプリケーション ロールを設定することはできますが、LINQ2SQL データ コンテキストを使用して摩擦を最小限に抑えながらこれを行うにはどうすればよいか疑問に思っていました。
私はこのリンクを見てきました: http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/e25e98a6-b0ac-42fc-b70c-2b269a7fa1cbしかし、よりクリーンなアプローチを望んでいました/
c# - 実行時に作成されるオブジェクトの役割ベースの承認にAzManを使用することは可能ですか?
実行時に作成されるオブジェクトの役割ベースの承認にAzManを使用することは可能ですか?はいの場合、これはどのように行うことができますか?
例えば:
クラス「CustomAlert」のオブジェクトが実行時に作成される場合、クラス「CustomAlert」のオブジェクトごとに異なるルールを設定できるかどうかを確認しようとしています。特定のユーザーのIDを使用してオブジェクトが作成された場合、そのユーザーがオブジェクトの作成者/所有者であると見なすと、そのユーザーはより多くのアクセス許可を使用できます。作成者/所有者のみがオブジェクトを変更できます。
java - JDBC set_approle
prepareCallを使用してJDBC接続を介してアプリケーションの役割を設定しようとしています。正常に動作しているように見えますが(つまり、構文的には)、SQLServer2008は次のエラーを返します。
ストアドプロシージャなどからこれを起動するのではなく、JDBC接続から直接起動します。
これが機能しない理由について何かアイデアはありますか?
c# - SQLサーバー接続でアプリケーションロールがアクティブになっていますか?
SQLサーバーへの接続(DbConnectionオブジェクト)に対して(およびどの)アプリケーションロールがアクティブであるかどうかを確認するにはどうすればよいですか?
私の問題は、すべてのデータベースオブジェクトにアプリケーションロールのアクセス権が付与されていることですが、selectステートメントを実行すると、「アクセスが拒否されました」というエラーが発生します。アプリケーションロールがアクティブ化された単一の接続オブジェクトを使用していますが、構成の誤りにより、EntityFrameworkまたはDIコンテナーのいずれかが別のDbConnectionオブジェクトを作成するのではないかと心配しています。
sql - Entity Framework 経由で SQL アプリケーション ロールを有効にする方法
私は現在、エンティティ フレームワークを使用して大きな政府アプリケーションを開発しています。最初に、SQL アプリケーション ロールの有効化に関する問題が 1 つあります。ado.net では、以下のコードを使用しています。
しかし、いくら検索しても EF に実装する方法が見つかりませんでした。
もう 1 つの質問は、エンティティ データ モデル デザイナーにアプリケーション ロールを追加する方法です。
私はEFで実行パラメータに以下のコードを使用しています:
ExecuteStoreCommand を実行すると、次の行がエラーを返します。
アプリケーション ロールは、アドホック レベルでのみアクティブ化できます。
sql-server - NLog データベース ターゲットと SQL Server アプリケーション ロール
既存のアプリケーションのカスタム ロギング「フレームワーク」を NLog に置き換えます。問題は、アプリケーションが SQL Server アプリケーション ロールを使用することです。つまり、SQL Server への接続を開くたびにsp_setapprole
sproc が実行されます。
データベース ターゲット構成でこの動作をシミュレートしてみました。
ただし、これによりエラーが発生します。
データベース ターゲットは、アプリケーション ロールの設定を除いて、必要なことはすべて実行できるため、独自のターゲットを作成することは避けたいと思います。したがって、NLogによって内部的に作成された接続のStateChangeイベントに何らかの方法で接続したり、他のトリックを実行したりできることを願っています。
TL;DR - NLog データベース ターゲット経由でログを記録するときにアプリケーション ロールに切り替えるにはどうすればよいですか?
sql-server - SQL Server アプリケーション ロールと通常のログインおよびユーザー
SQL Server アプリケーション ロールを使用してアクセス許可を管理することと、標準のログイン/ユーザーを使用して必要なアクセス許可をそのユーザーに付与することの利点は何ですか?
次のシナリオを必要とするアプリケーション ロールを使用しています。
- SQL Server ログインとパスワードを使用して SQL Server に接続します。
- ロール名と別のパスワードを sp_setapprole に渡して、アプリケーション ロールをアクティブにします。
アプリケーションロールのアクセス許可をログイン/ユーザーに付与するよりも、それがどのように優れているか、より安全であるかはわかりません。両方のパスワードをアプリケーションで使用できる必要があり、ログイン パスワードにアクセスできる人は誰でも、アプリ ロールのパスワードにアクセスして、独自のプログラムまたは SSMS で sp_setapprole を呼び出すことができます。右?
編集: Ed Harper が推測したように、私のシナリオでは、アプリケーションのすべてのインスタンスが同じログインを使用します。