

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

# OneDrive の Microsoft Entra App ID 認証を設定する
<a name="kb-managed-onedrive-entra-setup"></a>

Microsoft Entra App ID 認証 (`ENTRA_APP_ID`) は、OneDrive データソースに推奨される認証方法です。コネクタは、アプリケーションのクライアント ID とシークレットを使用して、OAuth 2.0 クライアント認証情報 (アプリケーションのみ) フローでコンテンツをクロールします。ユーザーのサインインは必要ありません。これは、ドキュメントレベルのアクセスコントロール (ACLs) をサポートする唯一の認証方法です。代替`OAUTH2`方法との比較については、「」を参照してください[認証方法](kb-managed-ds-onedrive.md#kb-managed-onedrive-auth-methods)。

**注記**  
証明書は、ドキュメントレベルのアクセスコントロールを有効にする場合にのみ必要です。コンテンツのみのクローリングでは、コネクタに必要な認証情報はクライアント ID とシークレットのみです。これは、Microsoft Entra ID App-Only 認証に常に証明書が必要な SharePoint データソースとは異なります。

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

## セットアップステップとロール
<a name="kb-managed-onedrive-entra-roles"></a>

この手順には、Microsoft Entra ID 管理者と AWS 管理者の両方が含まれます。組織における責任の分担方法によっては、1 人または複数のユーザーがこれらのステップを完了する場合があります。証明書のステップ (ステップ 4～6 および 8) は、ドキュメントレベルのアクセスコントロールを有効にする場合にのみ適用されます。以下の表を使用して、各ステップに必要なアクセスを特定します。


**セットアップステップと各ステップに必要なアクセス**  

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

## アクセス許可に関するリファレンス
<a name="kb-managed-onedrive-entra-permissions"></a>

設定に一致するアプリケーションアクセス許可を割り当てます。すべてのアクセス許可は**アプリケーションの**アクセス許可 (委任されていません) であり、すべてのアクセス許可には管理者の同意が必要です。コンテンツのみのクローリングの場合、コネクタは **Microsoft Graph **に対してのみ認証します。ドキュメントレベルのアクセスコントロールを有効にすると、OneDrive for Business は **SharePoint** によってバックアップされるため、コネクタはさらに SharePoint REST API を認証してクエリ時にアクセスを検証します。

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

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

------
#### [ Content only (no ACLs) ]


**コンテンツのみ**  

| API | アクセス許可 | 目的 | 
| --- | --- | --- | 
| Microsoft Graph | Files.Read.All | ユーザーのドライブにあるファイルを読み取ります。 | 
| Microsoft Graph | Sites.Read.All | ユーザーのドライブをバックアップする OneDrive サイトをお読みください。 | 
| Microsoft Graph | User.Read.All | クロールするドライブを持つユーザーを列挙します。 | 

------
#### [ With ACLs ]


**ACLs**  

| API | アクセス許可 | 目的 | 
| --- | --- | --- | 
| Microsoft Graph | Files.Read.All | ユーザーのドライブにあるファイルを読み取ります。 | 
| Microsoft Graph | Sites.Read.All | ユーザーのドライブをバックアップする OneDrive サイトをお読みください。 | 
| Microsoft Graph | User.Read.All | ユーザーを列挙し、ドキュメントレベルの ACLs。 | 
| Microsoft Graph | GroupMember.Read.All | ドキュメントレベルの ACLs。 | 
| SharePoint | Sites.FullControl.All | クエリ時に各ユーザーのドキュメントへのアクセスを確認します。 Sites.Read.Allはこのチェックには不十分です。 | 

------

**注記**  
SharePoint アクセス`Sites.FullControl.All`許可は、テナント内のサイト間でコネクタアプリケーションに広範なアクセスを許可します。このアプリケーションにのみ付与し、それに応じてアプリケーションの認証情報を保護します。

## セットアップ時に収集する値
<a name="kb-managed-onedrive-entra-values"></a>

ステップを進めながら、以下の値を作成または収集します。データソースを作成するときに使用します。詳細については、「[OneDrive データソースを接続する](kb-managed-ds-onedrive-connect.md)」を参照してください。


**値リファレンス**  

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

## ステップ 1: Microsoft Entra ID にアプリケーションを登録する
<a name="kb-managed-onedrive-entra-step1"></a>

1. [Microsoft Entra 管理センター](https://entra.microsoft.com/)にサインインします。

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

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

1. Name には****、 などのわかりやすい名前を入力します`bedrock-onedrive-connector`。

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

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

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

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

## ステップ 2: API アクセス許可を追加し、管理者の同意を付与する
<a name="kb-managed-onedrive-entra-step2"></a>

から設定のアクセス許可を追加します[アクセス許可に関するリファレンス](#kb-managed-onedrive-entra-permissions)。

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

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

1. ドキュメントレベルのアクセスコントロールを有効にする場合は、アクセス**許可を再度追加**を選択します。(**Microsoft APIs**) **SharePoint** を選択し、次に**アプリケーションのアクセス許可**を選択します。を選択し`Sites.FullControl.All`、アクセス**許可の追加**を選択します。

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

## ステップ 3: クライアントシークレットを作成する
<a name="kb-managed-onedrive-entra-step3"></a>

OneDrive クローリングはアプリケーションのクライアント ID とシークレットを使用するため、コンテンツ専用データソースと ACL 対応データソースの両方にクライアントシークレットが必要です。ドキュメントレベルのアクセスコントロールを有効にすると、コネクタはクライアントシークレットを使用してテナントの OneDrive ホストを解決する Microsoft Graph トークンを取得し、証明書 (ステップ 4 から) を使用してアクセスチェックに使用される SharePoint トークンを取得します。

1. アプリ登録で、**証明書とシークレット**、**クライアントシーク**レット、**新しいクライアントシークレット**を選択します。

1. 説明を入力し、有効期限を選択し、**追加**を選択します。

1. シークレット**値** をすぐに記録します。1 回だけ表示されます。**シークレット ID** ではなく、 **値**を記録します。

## ステップ 4 (ACLsのみ): 認証証明書を生成する
<a name="kb-managed-onedrive-entra-step4"></a>

**注記**  
このステップとステップ 5、6、8 は、ドキュメントレベルのアクセスコントロールを有効にする場合にのみ適用されます。コンテンツのみのクローリングの場合は、「」に進みます[ステップ 7: Secrets Manager シークレットを作成する](#kb-managed-onedrive-entra-step7)。

自己署名証明書を生成し、PKCS\#12 (`.p12`) バンドルとしてパッケージ化します。バンドルには、パスワードで保護された証明書とそのプライベートキーの両方が含まれています。パブリック証明書を Entra (ステップ 5) にアップロードし、`.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-onedrive-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`。ステップ 5 で Entra にパブリック証明書をアップロードし、ステップ 6 で`.p12`バンドルを Amazon S3 にアップロードします。

------
#### [ Windows (PowerShell) ]

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

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

```
$cert = New-SelfSignedCertificate `
    -Subject "CN={{bedrock-onedrive-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`。ステップ 5 で Entra にパブリック証明書をアップロードし、ステップ 6 で`.p12`バンドルを Amazon S3 にアップロードします。

------

**重要**  
`.p12` バンドルを Amazon S3 に保存します ( `.pem`または `.cer` ファイルではありません）。バンドルには、アクセス検証のために Amazon Bedrock が SharePoint に認証するために使用するプライベートキーが含まれているため、安全に保存します。ドキュメントレベルのアクセスコントロールには、 `.p12`形式が必要です。

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

## ステップ 5 (ACLs のみ): Entra にパブリック証明書をアップロードする
<a name="kb-managed-onedrive-entra-step5"></a>

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

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

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

## ステップ 6 (ACLsのみ): Amazon S3 に証明書をアップロードする
<a name="kb-managed-onedrive-entra-step6"></a>

ステップ 4 の`.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 シークレットを作成する
<a name="kb-managed-onedrive-entra-step7"></a>

認証情報を AWS Secrets Manager シークレットに保存します。Microsoft Entra App ID 認証には、次のキーと値のペアを含めます。
+ `clientId` (必須) — ステップ 1 のアプリケーション (クライアント) ID。
+ `clientSecret` (必須) — ステップ 3 のクライアントシークレット値。
+ `certificatePassword` (ドキュメントレベルのアクセスコントロールのみ、推奨) — ステップ 4 で`.p12`バンドルに設定したパスワード。以下の注意事項を参照してください。

**コンテンツのみ (ドキュメントレベルのアクセスコントロールなし)**

```
{
    "clientId": "{{your-client-id}}",
    "clientSecret": "{{your-client-secret}}"
}
```

**ドキュメントレベルのアクセスコントロールを使用する**

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

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

```
aws secretsmanager create-secret \
  --name {{bedrock-onedrive-creds}} \
  --secret-string file://secret.json
```

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

**注記**  
ドキュメントレベルのアクセスコントロールが有効になっている場合は、ステップ 4 で`.p12`バンドルを作成したときに使用したパスワード`certificatePassword`に を設定します。このフィールドを省略すると、Amazon Bedrock はアプリケーションのクライアント ID をパスワードとして使用してバンドルを開くため、バンドルはクライアント ID をパスワードとして使用して作成されている必要があります。代わりに、常に明示的でエントロピーの高いパスワードを設定することをお勧めします。

## ステップ 8 (ACLsのみ): サービスロールに証明書へのアクセスを許可する
<a name="kb-managed-onedrive-entra-step8"></a>

ナレッジベースサービスロールは、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 (ACLsのみ): Amazon S3 に証明書をアップロードする](#kb-managed-onedrive-entra-step6)を使用します。代わりに、カスタマーマネージド 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}}"]
}
```

ナレッジベースサービスロールのアクセス許可の完全なセットについては、「」を参照してください[データソースにアクセスするためのアクセス許可](kb-permissions.md#kb-permissions-access-ds)。

## 次の手順
<a name="kb-managed-onedrive-entra-next"></a>

これで、データソースの作成に必要な認証情報、シークレット ARN、テナント ID、および証明書の Amazon S3 の場所 (ドキュメントレベルのアクセスコントロール用) ができました。 AWS マネジメントコンソール または API を使用して OneDrive データソースを作成するには、「」を参照してください[OneDrive データソースを接続する](kb-managed-ds-onedrive-connect.md)。