1

バックグラウンド

Navision が処理する SQL Server データベースからデータを読み取る必要があるアプリケーション (MyApp と呼ばれる) を作成中です。Navision ユーザーは、データベースの権限を変更することなく、私のアプリケーションを使用できる必要があります。

Navision のアクセス許可の処理は、アプリケーション層にあるようです。データベースに保存せずに権限のチェックを実行します。

問題

Navision は、データベースと同期するときに、データベース内のユーザー、権限、およびその他の関連オブジェクトを上書きするため、DB ユーザーを作成してそれを使用するだけの通常のアプローチは機能しません。

考えられる解決策

私が最も適切な解決策だと思うのはMyApp、Active-Directory で役割を作成し、DB で必要な権限を付与し、この役割をすべてのユーザーに追加することです。

これを行う方法がわからない、または可能かどうかさえわかりません。その他のソリューションまたは提案も歓迎しますが、ActiveDirectory または Navision 内から管理できるソリューションのみを提案してください。

サーバーは Navison 5 を実行する SQL Server 2008 サーバーで、クライアントは Navision 6 です。Windows Server 2K8 用の Active Directory を使用しています。

編集:

私のアプリは、アプリケーションを作成および設計するクレートです。顧客の名前と ID、およびアイテム テーブル内のいくつかのアイテムを読み取る必要があるため、この機能が必要です。

4

2 に答える 2

2

NAV で強化されたセキュリティ モデルを使用すると、ユーザーのアクセス許可が SQL Server に同期されます。ただし、これらの SQL 権限は、ユーザーのログインではなく、SQL Server のアプリ ロールにマップされます。標準のセキュリティ モデルを使用する場合、すべてのユーザーはスーパー ユーザー (安全性が低い) である単一の SQL アプリ ロールにマップされます。

NAV セキュリティ モデルを使用して (つまり、NAV が作成する SQL App ロールを介して) SQL Server のデータにアクセスする場合は、CFront API (SDK オプションを介してインストール) を使用する必要があります。NAV 2009 Web サービスを使用している場合もオプションです。

SQL Server に直接アクセスする場合は、SQL Server を使用して権限を自分で管理する必要があります。アクセス許可を付与する SQL スクリプトを作成すると、ログインの同期中に NAV が削除する可能性があるものを簡単に復元できます。

説明したとおりに、Active Directory から SQL 権限を付与することはできません。代わりに、Active Directory グループを SQL Server ログインまたは NAV Windows ログインのいずれかにマップする必要があります (SQL に直接アクセスするか、サポートされている NAV API を使用するかによって異なります)。注: ロールに関連付けられた権限は、それぞれ SQL または NAV で管理されます。ADではありません。

管理の観点からは、この Active Directory グループに対してユーザーを簡単に追加および削除できます。NAV 拡張セキュリティ モデルを使用する場合、AD グループの各ユーザーは Windows ログインにもエントリを持っている必要があり、変更を加えるたびにログインを同期する必要があります。このわずかな不便さは、ネイティブ データベースの影響です。

于 2010-02-14T15:11:25.937 に答える
1

一般に、NAV レイヤーをスキップして DB に直接読み書きすることは、テーブルに格納されているすべての NAV ビジネス ロジックと NAV のレポート オブジェクトをバイパスしているため、まったくお勧めできません。

あなたのアプリは何をするつもりですか (特定できない場合は大雑把に)、NAV アドインまたはデータポートを使用することは実現可能ですか?

于 2010-01-25T17:09:29.987 に答える