View a markdown version of this page

SharePoint の Microsoft Entra ID アプリ専用認証を設定する - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SharePoint の Microsoft Entra ID アプリ専用認証を設定する

Microsoft Entra ID App-Only 認証 (ENTRA_ID_APP_ONLY) は、SharePoint データソースに推奨される認証方法です。OAuth 2.0 クライアント認証情報 (アプリケーションのみ) フローを使用します。Microsoft Entra アプリケーションは証明書で認証するため、クロール時またはクエリ時にユーザーのサインインは関与しません。これは、ドキュメントレベルのアクセスコントロール (ACLs) をサポートする唯一の認証方法です。代替OAUTH2_APP方法との比較については、「」を参照してください認証方法

この設定は、Microsoft Entra ID とアカウントという 2 つのシステムにまた AWS がり、証明書はそれらを結び付ける認証情報です。コネクタは、証明書 (プライベートキーを含む) を PKCS#12 (.p12) ファイルとして Amazon S3 に保存し、それを使用して Microsoft への認証アサーションに署名します。一致するパブリック証明書は Entra アプリケーション登録にアップロードされるため、Microsoft はそれらのアサーションを検証できます。

管理アクセスが必要

この設定では、Microsoft Entra ID 管理者 (グローバル管理者または特権ロール管理者) がアプリケーションを登録し、アクセス許可を設定し、管理者の同意を付与する必要があります。アクセスSites.Selected許可の範囲を使用する場合は、SharePoint 管理者もサイトごとのアクセスを許可する必要があります。以下のセットアップステップとロールの表は、各ステップに必要なアクセスを示しています。

セットアップステップとロール

この手順には、Microsoft Entra ID 管理者と AWS 管理者の両方が含まれます。組織における責任の分担方法によっては、1 人または複数のユーザーがこれらのステップを完了する場合があります。以下の表を使用して、各ステップに必要なアクセスを特定します。

セットアップステップと各ステップに必要なアクセス
Step 行うこと 必要なアクセス
1. アプリケーションを登録する Entra アプリ登録を作成し、そのクライアント ID とテナント IDsを記録します。 Microsoft Entra ID 管理者 (グローバル管理者または特権ロール管理者)
2. アクセス許可を追加し、同意を付与する 設定にアプリケーションアクセス許可を割り当て、管理者の同意を付与します。 Microsoft Entra ID 管理者
3. 証明書を生成する OpenSSL で自己署名証明書と PKCS#12 (.p12) バンドルを作成します。 ローカルターミナルを持つユーザー (OpenSSL が必要)
4. パブリック証明書を Entra にアップロードする アプリ登録のキーにパブリック証明書を追加します。 Microsoft Entra ID 管理者
5. サイトごとのアクセス許可を付与する (Sites.Selected のみ) Microsoft Graph API を使用して、各 SharePoint サイトへのアクセス権をアプリに付与します。 Microsoft Entra ID 管理者
6. Amazon S3 に証明書をアップロードする .p12 バンドルを Amazon S3 バケットに保存します。 AWS 管理者 (Amazon S3)
7. シークレットを作成する 認証情報を AWS Secrets Manager シークレットに保存します。 AWS 管理者 (Secrets Manager)
8. サービスロールに証明書へのアクセス権を付与する ナレッジベースサービスロールに Amazon S3 読み取りアクセス許可を追加します。 AWS 管理者 (IAM)

設定を選択する

開始する前に、2 つの決定を行います。ステップ 2 で割り当てるアクセス許可と、サイトアクセスの付与方法を決定します。

  • ドキュメントレベルのアクセスコントロール (ACLs) — データソースがクエリ結果を各ユーザーの SharePoint アクセス許可でフィルタリングするかどうかを決定します。ACL クローリングには、追加の Microsoft Graph および SharePoint アクセス許可が必要です。データソースの作成後にこの設定を変更することはできません。詳細については、「ドキュメントレベルのアクセスコントロール」を参照してください。

  • アクセス許可の範囲 — アプリケーションがテナント内のすべての SharePoint サイト (すべてのサイト、最も簡単なオプション) を読み取ることができるか、明示的に付与したサイトのみ (最小特権オプションSites.Selected) を読み取ることができるかを決定します。ステップ 5 で追加のサイトごとの許可Sites.Selectedを完了すると、後で追加するサイトには独自の許可が必要です。

これら 2 つの選択肢を組み合わせると、次のセクションのアクセス許可セットのいずれかが選択されます。

アクセス許可に関するリファレンス

設定に一致するアプリケーションアクセス許可を割り当てます。すべてのアクセス許可はアプリケーションのアクセス許可 (委任されていません) であり、すべてのアクセス許可には管理者の同意が必要です。コネクタは、Microsoft Graph (サイトを列挙するため、ACLs の場合はユーザーとグループを解決するため) と SharePoint REST API (サイトコンテンツを読み取るため、ACLsの場合は項目レベルのアクセス許可) の 2 つの Microsoft リソースを認証します。

重要

Entra ポータルでこれらのアクセス許可を追加するときは、委任されたアクセス許可ではなく、アプリケーションのアクセス許可タブを選択します。 アプリケーションのみの認証では、アプリケーションのアクセス許可を使用します。

設定のタブを選択すると、割り当てる Microsoft Graph と SharePoint の正確なアクセス許可が表示されます。

All sites, no ACLs
すべてのサイト、コンテンツのみ
API アクセス許可 目的
Microsoft Graph Sites.Read.All すべての SharePoint サイトを列挙して読み取ります。
SharePoint Sites.Read.All SharePoint REST API を使用してサイトコンテンツを読み取ります。
All sites, with ACLs
ACLsを使用するすべてのサイト
API アクセス許可 目的
Microsoft Graph Sites.Read.All すべての SharePoint サイトを列挙して読み取ります。
Microsoft Graph User.Read.All ドキュメントレベルの ACLs。
Microsoft Graph GroupMember.Read.All ドキュメントレベルの ACLs。
SharePoint Sites.FullControl.All ACL クロールの項目レベルのアクセス許可を読み取り、クエリ時にアクセスを検証します。 Sites.Read.Allはこのチェックに十分ではありません。
Sites.Selected, no ACLs
Sites.Selected、コンテンツのみ
API アクセス許可 目的
Microsoft Graph Sites.Selected 明示的に付与したサイトにのみアクセスします (Microsoft Graph)。
SharePoint Sites.Selected 明示的に付与したサイト (SharePoint REST) にのみアクセスします。ステップ 5 でサイトごとに readロールを付与します。
Sites.Selected, with ACLs
Sites.Selected、ACLs付き
API アクセス許可 目的
Microsoft Graph Sites.Selected 明示的に付与したサイトにのみアクセスします (Microsoft Graph)。
Microsoft Graph User.Read.All ドキュメントレベルの ACLs。
Microsoft Graph GroupMember.Read.All ドキュメントレベルの ACLs。
SharePoint Sites.Selected 明示的に付与したサイトにのみアクセスします。ステップ 5 でサイトごとにfullcontrolロールを付与します (ACLs の項目レベルのアクセス許可を読み取るために必要です)。
注記

Sites.FullControl.All は、テナント内のすべてのサイトへの広範なアクセスを許可します。組織で最小特権が必要な場合は、ステップ 5 で を使用しSites.Selected、サイトごとのアクセスを許可します。

セットアップ時に収集する値

ステップを進めながら、以下の値を作成または収集します。データソースを作成するときに使用します。詳細については、「SharePoint データソースを接続する」を参照してください。

値リファレンス
で作成 次の用途に使用されます。
アプリケーション (クライアント) ID ステップ 1 シークレット (clientId)。
ディレクトリ (テナント) ID ステップ 1 データソース tenantId
証明書 — PKCS#12 バンドル (.p12) とそのパスワード ステップ 3 バンドル (証明書とプライベートキー) は Amazon S3 にアップロードされ (ステップ 6)、パスワードはシークレットに保存されます (certificatePassword)。
証明書 — パブリック証明書 (.cer) ステップ 3 Entra アプリ登録にアップロードされた同じ証明書のパブリック半分 (ステップ 4)。
Amazon S3 バケット名とキー ステップ 6 データソース certificateS3Path
シークレット ARN ステップ 7 データソース secretArn

ステップ 1: Microsoft Entra ID にアプリケーションを登録する

  1. Microsoft Entra 管理センターにサインインします。

  2. 左側のナビゲーションで、Entra ID を展開し、アプリ登録を選択します。

  3. [New registration] (新規登録) を選択します。

  4. Name には、 などのわかりやすい名前を入力しますbedrock-sharepoint-connector

  5. サポートされているアカウントタイプでは、この組織ディレクトリのアカウントのみ (単一テナント) を選択します。

  6. リダイレクト URI は空白のままにします。アプリケーションはインタラクティブサインインフローではなくクライアント認証情報フローを使用するため、リダイレクト URI は必要ありません。

  7. [登録] を選択します。

  8. アプリケーションの概要ページで、アプリケーション (クライアント) IDディレクトリ (テナント) ID を記録します。後で両方が必要です。

ステップ 2: API アクセス許可を追加し、管理者の同意を付与する

から設定のアクセス許可を追加しますアクセス許可に関するリファレンス

  1. アプリ登録で API アクセス許可を選択し、アクセス許可を追加します

  2. Microsoft Graph を選択し、次にアプリケーションのアクセス許可を選択します。設定の各 Microsoft Graph アクセス許可を検索して選択し、アクセス許可の追加を選択します。

  3. アクセス許可を再度追加を選択します。(Microsoft APIs) SharePoint を選択し、次にアプリケーションのアクセス許可を選択します。設定の各 SharePoint アクセス許可を選択し、アクセス許可の追加を選択します。

  4. API アクセス許可ページで、[組織] に対する管理者の同意を付与を選択し、確認します。管理者の同意がない場合、アプリケーションは SharePoint データにアクセスできません。

注記

Microsoft Entra ID App-Only 認証は証明書 (ステップ 3 から) を認証情報として使用するため、このアプリケーションのクライアントシークレットは作成しません。

ステップ 3: 認証証明書を生成する

自己署名証明書を生成し、PKCS#12 (.p12) バンドルとしてパッケージ化します。バンドルには、パスワードで保護された証明書とそのプライベートキーの両方が含まれています。パブリック証明書を Entra (ステップ 4) にアップロードし、.p12バンドルを Amazon S3 (ステップ 6) にアップロードします。オペレーティングシステムのタブを選択すると、コマンドが表示されます。

注記

Amazon Bedrock は.p12バンドルからプライベートキーを読み取り、認証アサーションに署名するため、バンドルはパスワードで保護され、安全に保存する必要があります。強力でランダムcertificatePasswordなパスワードを選択します。ステップ 7 のようにシークレットに保存します。

Linux or macOS (OpenSSL)

プライベートキーと自己署名証明書を生成する

openssl req -x509 -newkey rsa:2048 -keyout private_key.pem -out certificate.cer \ -days 365 -nodes \ -subj "/CN=bedrock-sharepoint-connector"

証明書とキーを PKCS#12 (.p12) バンドルとしてパッケージ化する

プロンプトが表示されたら、強力なエクスポートパスワードを入力します。ステップ 7 で記録します。

openssl pkcs12 -export -out certificate.p12 \ -inkey private_key.pem -in certificate.cer

これで、プライベートキー (private_key.pem)、パブリック証明書 ()、バンドル (certificate.cer) の 3 つのファイルが作成されましたcertificate.p12。ステップ 4 で Entra にパブリック証明書をアップロードし、ステップ 6 で.p12バンドルを Amazon S3 にアップロードします。

Windows (PowerShell)

自己署名証明書を生成する

次の PowerShell コマンドは、1 年間の有効期間を持つ 2048 ビット RSA 自己署名証明書を生成し、現在のユーザーの証明書ストアに保存します。your-password を強力でランダムなパスワードに置き換えます。ステップ 7 certificatePasswordのようにシークレットに保存します。

$cert = New-SelfSignedCertificate ` -Subject "CN=bedrock-sharepoint-connector" ` -CertStoreLocation "Cert:\CurrentUser\My" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyExportPolicy Exportable ` -NotAfter (Get-Date).AddYears(1)

パブリック証明書をエクスポートする

Export-Certificate -Cert $cert -FilePath certificate.cer -Type CERT

PKCS#12 (.p12) バンドルをエクスポートする

$password = ConvertTo-SecureString -String "your-password" -Force -AsPlainText Export-PfxCertificate -Cert $cert -FilePath certificate.p12 -Password $password

これで、パブリック証明書 (certificate.cer) とバンドル () の 2 つのファイルが作成されましたcertificate.p12。ステップ 4 で Entra にパブリック証明書をアップロードし、ステップ 6 で.p12バンドルを Amazon S3 にアップロードします。

重要

.p12 バンドルを Amazon S3 に保存します ( .pemまたは .cer ファイルではありません)。バンドルには、Amazon Bedrock が認証に使用するプライベートキーが含まれています。ドキュメントレベルのアクセスコントロール (ACLs) には .p12形式が必要です。ACLs を使用しないコンテンツのみのクローリングの場合、代わりに PEM エンコードされた証明書を保存できます。 はすべての設定で.p12機能するため、このガイドでは .p12 全体を使用します。

注記

証明書はデフォルトで 1 年間有効です。証明書の有効期限が切れると、すべての同期が失敗するため、有効期限が切れる前に証明書をローテーションします。有効期間を変更するには、 -daysオプション (OpenSSL) または -NotAfter引数 (PowerShell) を調整します。ローテーションの手順については、「」を参照してください証明書をローテーションする

ステップ 4: Entra にパブリック証明書をアップロードする

  1. アプリ登録で、証明書とシークレットを選択し、証明書タブを選択します。

  2. 証明書をアップロードを選択し、ステップ 3 で生成したcertificate.cerファイルを選択します (パブリック証明書のみ。.p12バンドルまたはプライベートキーを Entra にアップロードしないでください)。

  3. [Add] (追加) を選択します。

ステップ 5 (Sites.Selected のみ): サイトごとのアクセス許可を付与する

注記

このステップは、ステップ 2 でSites.Selectedアクセス許可の範囲を選択した場合にのみ適用されます。全サイトスコープ (Sites.Read.All または Sites.FullControl.All) を使用した場合は、「」に進みますステップ 6: Amazon S3 に証明書をアップロードする

ではSites.Selected、Microsoft Graph API を使用して、コネクタアプリケーションに各 SharePoint サイトへのアクセス権を個別に付与します。これには、 を保持Sites.FullControl.Allし、許可の実行にのみ使用される別の一時的なアプリケーションが必要です。Amazon Bedrock は、この一時アプリケーションまたはその認証情報を表示しません。

  1. 一時的なグランターアプリケーションを作成します。Entra 管理センターで、リダイレクト URI なしで 2 番目のアプリケーション (例: bedrock-sharepoint-granter) をシングルテナントとして登録します。Microsoft Graph Sites.FullControl.Allアプリケーションのアクセス許可を追加し、管理者の同意を付与して、クライアントシークレットを作成します。クライアント ID とシークレット値を記録します。

  2. グランターアプリケーションのアクセストークンを取得します。プレースホルダーを、グランターアプリケーションのクライアント ID とシークレット、およびテナント ID に置き換えます。

    curl -s -X POST \ "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=GRANTER_CLIENT_ID" \ -d "client_secret=GRANTER_CLIENT_SECRET" \ -d "scope=https://graph.microsoft.com/.default"

    レスポンスには が含まれますaccess_token。次のコマンドでベアラートークンとして使用します。

  3. 各サイト URL をサイト ID に解決します。サイトのホスト名とサーバー相対パスを使用します。

    curl -s \ "https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/engineering" \ -H "Authorization: Bearer ACCESS_TOKEN"

    レスポンスの idフィールドはサイト ID です。

  4. コネクタアプリケーションにサイトへのアクセスを許可します。コンテンツのみのクローリングreadには を使用し、ACL クローリングfullcontrolには を使用します。CONNECTOR_CLIENT_ID をステップ 1 のアプリケーション (クライアント) ID に置き換えます。

    curl -s -X POST \ "https://graph.microsoft.com/v1.0/sites/SITE_ID/permissions" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "roles": ["fullcontrol"], "grantedToIdentities": [{ "application": { "id": "CONNECTOR_CLIENT_ID", "displayName": "bedrock-sharepoint-connector" } }] }'
  5. データソースに含めるサイトごとに resolve-and-grant コマンドを繰り返します。完了したら、一時付与アプリケーションを削除できます。サイトごとの付与は有効です。

重要

サイトごとの許可は遡及的ではありません。後でデータソースにサイトを追加する場合は、次回の同期前にそのサイトへのアクセスをコネクタアプリケーションに許可します。許可しない場合、そのコンテンツはクロールされません。

ステップ 6: Amazon S3 に証明書をアップロードする

ステップ 3 の.p12バンドルをナレッジベースと同じ AWS リージョンの Amazon S3 バケットにアップロードします。バケット名とキーを記録します。データソース として使用しますcertificateS3Path

aws s3api put-object \ --bucket your-certificate-bucket \ --key certs/certificate.p12 \ --body certificate.p12 \ --server-side-encryption AES256
注記

証明書オブジェクトでサーバー側の暗号化を有効にし、バケットを必要とするプリンシパルに制限することをお勧めします。バンドルにはプライベートキーが含まれています。

ステップ 7: Secrets Manager シークレットを作成する

認証情報を AWS Secrets Manager シークレットに保存します。Entra ID App-Only 認証には、次のキーと値のペアを含めます。

  • clientId (必須) — ステップ 1 のアプリケーション (クライアント) ID。

  • certificatePassword (推奨) — ステップ 3 で.p12バンドルに設定したパスワード。以下の注意事項を参照してください。

{ "clientId": "your-client-id", "certificatePassword": "your-certificate-password" }

以下を使用してシークレットを作成します AWS Command Line Interface。

aws secretsmanager create-secret \ --name bedrock-sharepoint-creds \ --secret-string file://secret.json

レスポンスからシークレット ARN を記録します。データソース として使用しますsecretArn

注記

ステップ 3 で.p12バンドルを作成したときに使用したパスワードcertificatePasswordに を設定します。このフィールドを省略すると、Amazon Bedrock はアプリケーションのクライアント ID をパスワードとして使用してバンドルを開くため、バンドルはクライアント ID をパスワードとして使用して作成されている必要があります。代わりに、常に明示的でエントロピーの高いパスワードを設定し、プライベートキーを安全に保存することをお勧めします。

注記

代わりに PEM 証明書を使用します。このガイドでは、すべての設定で動作する.p12バンドルを使用します。コンテンツのみをクロールする場合 (ドキュメントレベルのアクセスコントロールなし)、代わりに PEM 証明書を使用できます。この場合、パブリック証明書のみを Amazon S3 (.p12バンドルではない) にアップロードし、プライベートキーを の代わりに privateKey (暗号化されていない base64 エンコードされた PKCS#8、ヘッダー行なし) としてシークレットに保存しますcertificatePassword

{ "clientId": "your-client-id", "privateKey": "your-base64-pkcs8-private-key" }

ステップ 8: サービスロールに証明書へのアクセス権を付与する

ナレッジベースサービスロールは、Amazon S3 から証明書オブジェクトを読み取ることができる必要があります。次のステートメントをロールのアクセス許可ポリシーに追加し、バケット名とキーを値に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ListCertificateBucket", "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::your-certificate-bucket"], "Condition": { "StringEquals": { "aws:ResourceAccount": ["123456789012"] } } }, { "Sid": "S3GetCertificate", "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::your-certificate-bucket/certs/certificate.p12", "arn:aws:s3:::your-certificate-bucket/certs/certificate.p12.metadata.json" ], "Condition": { "StringEquals": { "aws:ResourceAccount": ["123456789012"] } } } ] }
注記

このポリシーでは、証明書とともにオプションの .metadata.json ファイルへの読み取りアクセスも許可します。Amazon Bedrock はこのファイルを必要としません。 アクセス許可を含めると、アクセスエラーが存在する場合、アクセスエラーを防ぐことができます。

証明書オブジェクトが KMS AWS キーで暗号化されている場合

のアップロードコマンドは、追加のアクセス許可を必要としない Amazon S3-managed暗号化 (AES256) ステップ 6: Amazon S3 に証明書をアップロードするを使用します。代わりに、カスタマーマネージド KMS キー (SSE-KMS) を使用して Amazon S3 サーバー側の暗号化で証明書オブジェクトを暗号化する場合、サービスロールにはそのキーに対する kms:Decrypt アクセス許可も必要です。また、キーのポリシーでは、そのキーの使用をロールに許可する必要があります。 AWS マネージドaws/s3キーで暗号化されたオブジェクトには、この追加の許可は必要ありません。

{ "Sid": "KmsDecryptCertificate", "Effect": "Allow", "Action": ["kms:Decrypt"], "Resource": ["arn:aws:kms:us-west-2:123456789012:key/your-key-id"] }

読み取りアクセスに必要なのは のみですkms:Decrypt。詳細については、「Using server-side encryption with AWS KMS keys (SSE-KMS)」を参照してください。

ナレッジベースサービスロールのアクセス許可の完全なセットについては、「」を参照してくださいデータソースにアクセスするためのアクセス許可

次の手順

これで、シークレット ARN、テナント ID、証明書の Amazon S3 の場所など、データソースの作成に必要なものがすべて揃いました。 AWS マネジメントコンソール または API を使用して SharePoint データソースを作成するには、「」を参照してくださいSharePoint データソースを接続する

重要

ENTRA_ID_APP_ONLY 認証では、ACLsが無効になっている場合でも、データソースの作成certificateS3Path時に を指定する必要があります。この認証タイプで作成された SharePoint データソースは失敗します。