Kendra と SharePoint を Azure AD App-Only 認証での連携
まえがき
Amazon Kendra で SharePoint のドキュメントを同期する方法で、今回は SharePoint Connector V2.0 で Azure AD App-Only 認証を試していきます。
この方法では、ユーザーの資格情報ではなく、アプリケーションの証明書ベースの認証を使用するため、ユーザをシェアしたいグループに追加する必要ないです。
しかし、証明書は 365 日の有効期限なので、定期的に入れ替える必要があります。
連携に必要なもの
Azure AD App-Only 認証で連携するには、以下の情報が必要になります。
- Azure AD に登録したアプリケーションの Client ID
- 自己署名 X.509 証明書
- 証明書に対応する秘密鍵(Private Key)
- SharePoint Tenant ID
手順
1.自己署名証明書の生成
OpenSSL を使って自己署名証明書を生成します。
openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.crt -days 365 -nodes
private.key: 秘密鍵ファイル(AWS Secrets Manager に保存)certificate.crt: 証明書ファイル(Azure AD にアップロード),S3 にもアップロード
2.Azure AD でのアプリ登録
- Azure Portal にログイン
- Azure Active Directory → App registrations に移動
- 「New registration」で新しいアプリケーションを登録
- 「Certificates & secrets」→「Certificates」タブで証明書(.crt)をアップロード
- 「API permissions」で SharePoint の権限を追加
- 「Grant admin consent」で管理者の同意を付与


3.API 権限の設定
SharePoint にアクセスするために必要な API 権限は、ACL(アクセス制御リスト)を使用するかどうかで異なります。
ACL を使用しない場合
| API | 権限 | 説明 |
|---|---|---|
| SharePoint | Sites.Read.All (Application) | すべてのサイトコレクションのアイテムとリストへのアクセスに必要 |
ACL を使用する場合
| API | 権限 | 説明 |
|---|---|---|
| SharePoint | Sites.FullControl.All (Application) | ドキュメントの ACL 取得に必要 |
特定のサイトのみクロールする場合は、Sites.Selected (Application) 権限を設定し、
Microsoft Graph API で各サイトへのアクセス権限を明示的に設定することもできます。
4.S3 に certificate.crt をアップロード
certificate.crt を S3 を任意のバケットに登録する。
5.Kendra の DataSource を追加する
Kendra コンソールで Data source を追加し、SharePoint connector (V2.0) を選択します。
以下の項目を設定します。重要な部分のみ抜粋。IAMやACLなどはご自身の環境にあわせて設定してださい。この例ではrecommendで作っています。
| 項目 | 設定値 |
|---|---|
| Hosting Method | SharePoint Online |
| Site URLs | https://yourdomain.sharepoint.com/sites/mysite 形式で入力 |
| Domain | SharePoint のドメイン名(例: yourdomain) |
| Authentication | Azure AD App-Only authentication |
Tenant ID をいれ、Azure AD App-Only 認証用のシークレットを AWS Secrets Manager に作成します。
| キー | 値 |
|---|---|
| clientId | azure-ad-client-id |
| privateKey | -----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY----- |



6.ドキュメント同期
ドキュメントを同期して、成功した場合このような画面になります。

まとめ
Kendra の SharePoint Connector V2.0 で Azure AD App-Only 認証を使うことで、
ユーザーの資格情報を使わずに SharePoint のドキュメントを同期できます。
証明書ベースの認証は、サービスアカウントのパスワード管理が不要になるメリットがありますが、
証明書の有効期限管理は忘れずに行いましょう。
設定でつまづいた場合は、Azure AD の API 権限や管理者の同意、
Secrets Manager のシークレット形式を確認してみてください。






