UDF コード アクセス セキュリティのアクセス許可を制限するRestrict UDF code access security permissions

特定のユーザー定義関数 (UDF) アセンブリを完全信頼で実行しないようにするには、そのアセンブリに対するコード アクセスのセキュリティ アクセス許可を明示的に制限する必要があります。コード グループを構成し、アクセス許可を制限するには, .NET Framework 2.0 構成ツールを使用します。If you do not want a particular user-defined function (UDF) assembly to run with full trust, you must explicitly restrict code access security permissions for it. You can configure code groups and restrict permissions by using the .NET Framework 2.0 Configuration tool.

たとえば、複数のメソッドを含む UDF アセンブリに関するシナリオを考えてみましょう。1 つの UDF メソッドはカスタム計算を実行し、同じアセンブリに含まれるもう 1 つの UDF メソッドは Web サービスを呼び出して株価を取得します。ユーザーは最初のメソッド (計算) を呼び出す Excel ブックのみを使用するため、このアセンブリからの Web アクセスを無効にしてセキュリティを高めることにします。 UDF アセンブリは、サーバー上のフォルダー C:\UdfAssemblies\CalcAndWebAccessUdf.dll にインストールしました。アセンブリは Microsoft SharePoint Server 2010 と同じコンピューター上にあるため、Excel Calculation Services によって UDF アセンブリが読み込まれるとき、それは MyComputer ゾーンに読み込まれます。既定で、MyComputer ゾーンは完全信頼されます。したがって、読み込まれた UDF アセンブリには完全信頼のアクセス許可が付与されます。For example, imagine a scenario where you have a UDF assembly that contains multiple methods. One of the UDF methods performs a custom calculation, and another UDF method in the same assembly calls a Web service to obtain stock quotes. Because your users only use Excel workbooks that call the first (calculation) method, you might want to disable the assembly from having Web access, for increased security. You have the UDF assembly installed in a folder on the server at C:\UdfAssemblies\CalcAndWebAccessUdf.dll. Because the assembly is on the same computer as Microsoft SharePoint Server 2010, when Excel Calculation Services loads the UDF assembly, it is loaded in the MyComputer zone. By default, the MyComputer zone is fully trusted. This means that the UDF assembly is granted full trust permission.

UDF アセンブリをロックダウンして Web アクセスをできないようにするには、以下の手順を実行して、付与されているアクセス許可セットを明示的に制限する必要があります。To lock down the UDF assembly so that it cannot have Web access, you must explicitly restrict the permission set that it is granted by following these steps:

  1. 新しい URL ベースのコード グループをマシン レベルの My_Computer_Zone の下に作成します。コード グループのスコープをその特定のアセンブリに設定し、カスタム アクセス許可セットを作成します。Create a new URL-based code group under My_Computer_Zone at the Machine level. Scope the code group to that specific assembly and create a custom permission set.

  2. カスタム コード グループのプロパティを、そのカスタム コード グループに関連付けられたアクセス許可セットからのアクセス許可のみをポリシー レベルが持つという構成にします。同じコンピューター上に存在する UDF アセンブリを Excel Calculation Services が読み込むとき、アセンブリは MyComputer ゾーンに読み込まれます。したがって、既定では、UDF アセンブリには完全信頼が付与されます。カスタム アクセス許可セットと完全信頼アクセス許可セットの論理積をとると、結果は完全信頼になります。そうではなく、カスタム コード グループに関連付けられたアクセス許可セットからのアクセス許可のみをポリシーに設定するには、[ このポリシー レベルはこのコード グループに関連するアクセス許可セットからのアクセス許可のみを持つ] プロパティを有効にする必要があります。Configure the custom code group properties so that your policy level has only the permissions from the permission set that is associated with the custom code group. When Excel Calculation Services loads a UDF assembly that resides on the same computer, the assembly is loaded in the MyComputer zone. This means that by default, the UDF assembly is granted full trust. When the custom permission set intersects with the full trust permission set, the result is full trust. To make it so that the a policy has only the permission from the permission set that is associated with your custom code group, you must enable the This policy level will only have the permissions from the permission set associated with this code group property.

コード グループを構成する方法の詳細については、MSDN の以下の資料を参照してください。For more information about configuring code groups, see the following articles on MSDN:

新しいコード グループを作成するにはTo create a new code group

  1. [ スタート] をクリックし、[ すべてのプログラム]、[ 管理ツール] とポイントしてから、[ Microsoft .NET Framework 2.0 Configuration] をクリックします。Click Start, point to All Programs, point to Administrative Tools, and then click Microsoft .NET Framework 2.0 Configuration.

    これにより、[ .NET 2.0 Framework Configuration] ツールが開始されます。This starts the .NET 2.0 Framework Configuration tool.

  2. 左側のウィンドウで、[ マイ コンピューター] ノードを展開し、[ ランタイム セキュリティ ポリシー] ノードを展開します。In the left pane, expand the My Computer node, and then expand the Runtime Security Policy node.

  3. [ マシン] ノードを展開します。Expand the Machine node.

  4. [ コード グループ] ノードを展開します。Expand the Code Groups node.

  5. [ All_Code] ノードを展開します。Expand the All_Code node.

  6. [ My_Computer_Zone] ノードを展開します。[ My_Computer_Zone] を右クリックしてから、[ 新規] を選択します。[ 新しいコード グループの識別] ダイアログ ボックスが表示されます。Expand the My_Computer_Zone node.Right-click My_Computer_Zone and then select New to display the Identify the new Code Group dialog box.

  7. [ 新しいコード グループを作成する] を選択します。Select Create a new code group.

  8. [ 名前] フィールドに、新しいコード グループの名前を入力します。例: RestrictWebAccessUdf。In the Name field, type a name for the new code group, for example,RestrictWebAccessUdf.

  9. [ 次へ] をクリックします。Click Next.

  10. コード グループのスコープを特定の UDF アセンブリに限定するために、[ このコード グループの条件の種類を選択します] から [ URL] を選択します。To scope the code group to your specific UDF assembly, select URL from the Choose the condition type for this code group.

    これにより、[ URL] フィールドが表示されます。This displays the URL field.

  11. [ URL] フィールドに、Web へのアクセスを制限する UDF アセンブリへのパスを入力します。例: C:\UdfAssemblies\CalcAndWebAccessUdf.dll。In the URL field, type the path to the UDF assembly for which you want to restrict access to the Web, for example,C:\UdfAssemblies\CalcAndWebAccessUdf.dll.

  12. [ 次へ] をクリックします。Click Next.

  13. [ 新しいアクセス許可セットの作成] を選択し、[ 次へ] をクリックします。Select Create a new permission set, and then click Next.

  14. [ 名前] フィールドに、アクセス許可セットの名前を入力します。例: AssemblyExecutionCustomPermissionSet。In the Name field, type a name for your permission set, for example,AssemblyExecutionCustomPermissionSet.

  15. [ 次へ] をクリックします。Click Next.

  16. UDF アセンブリに "アセンブリ実行" アクセス許可を付与するために、[ アセンブリへのアクセス許可] の一覧から [ セキュリティ] を選択した後、[ 追加] をクリックします。To give your UDF assembly "assembly execution" permission, select Security from the Assembly Permissions list, and then click Add.

    これにより、[アクセス許可の設定] ダイアログ ボックスが表示されます。This displays the Permission Settings dialog box.

  17. [アセンブリに以下のセキュリティ アクセスを許可] を選択します。Select assemblies the following security permissions.

  18. [アセンブリを有効にする] を選択します。Select Enable assembly execution.

  19. [ OK] をクリックしてから [ 次へ] をクリックします。Click OK, and then click Next.

  20. [ 完了] をクリックします。Click Finish.

    [ My_Computer_Zone] ノードの下に新しいカスタム コード グループが表示されるはずです (この例では、 RestrictWebAccessUdf)。You should see your new custom code group under the My_Computer_Zone node (in this example, RestrictWebAccessUdf).

アクセス許可セットが実行されるかどうかを確認するにはTo make sure that the permission sets are executed

  1. [ My_Computer_Zone] ノードの下で、新しいカスタム コード グループ (この例では、 RestrictWebAccessUdf) を右クリックして、[ プロパティ] を選択します。Under the My_Computer_Zone node, right-click the new custom code group (in this example, RestrictWebAccessUdf), and then select Properties.

  2. [ 全般] タブで、[ このポリシーレベルはこのコード グループに関連するアクセス許可セットからのアクセス許可のみを持つ] チェック ボックスを選択します。On the General tab, select the This policy level will only have the permissions from the permission set associated with this code group check box.

  3. [適用] をクリックし、[OK] をクリックします。Click Apply, and then click OK.

    注意

    UDF メソッドが Web サービス呼び出しを実行できなかったために例外を throw した場合は、その UDF を呼び出した Excel 数式に [#VALUE!] エラーが表示されます。If the UDF method throws an exception because it cannot make the Web service call, you should receive a #VALUE! error in the Excel formula that called the UDF.

    注意

    テストのために UDF アセンブリに対する Web アクセスを有効にする場合は、カスタム アクセス許可セットに適切なアクセス許可を追加する必要があります。そのためには、「新しいコード グループを作成するには」の手順のステップ 11 で [Web アクセス] を選択します。If you want to enable Web access for your UDF assembly for testing, you must add the appropriate permission to your custom permission set. To do this, in Step 11 of the "To create a new code group" procedure, select Web Access.

関連項目See also