
# Microsoft Entra サービス プリンシパルを使用した Azure DevOps のコード スキャン

## Microsoft Entra サービス プリンシパルを使用した Azure DevOps のコード スキャン

個人用アクセス トークン（PAT）の代わりに、あなたが所有する Microsoft Entra サービス プリンシパルとして Aikido に Azure DevOps 組織をスキャンさせることができます。トークンやシークレットは作成も保存もされません。スキャンのたびに、Aikido は Microsoft Entra に対して自身の ID を証明し、Microsoft Entra がサービス プリンシパル用の短期間有効なアクセス トークンを発行します。有効期限切れもローテーションも不要です。

{% hint style="info" %}
ワークスペースはすでに PAT で Azure DevOps Services（dev.azure.com）に接続されている必要があり、Azure DevOps 組織は Microsoft Entra テナント（**組織設定** → **Microsoft Entra**）に接続されている必要があります。そのテナントでアプリケーションを登録でき、Azure DevOps 組織にユーザーを追加できる必要があります。Azure DevOps Server、Aikido ブローカー、およびローカル スキャナーは引き続き PAT を使用します。
{% endhint %}

**まず**、次に移動します [一般設定](https://app.aikido.dev/settings/account)に戻り、】【t\_f3941c4b":"デバイスを接続","t\_5d4f039e":"管理対象デバイスでインストールコマンドを実行する","t\_831d390e":"Workspace ONE UEM コンソールで、次の場所に移動します：","t\_8edbd69c":"リソース","t\_72eed93f":"→","t\_ba9a6e6d":"スクリプト","t\_d113c2a0":"を選択し、","t\_96cd98c8":"Windows","t\_249d2587":"をドロップダウンから選択します。","t\_43b01c7b":"","t\_36c80f14":"一般","t\_f6ef8739":"タブで、スクリプトに名前を付けます（例：\\"Aikido Device Protection Install\\"）。","t\_c35a5a82":"詳細","t\_0acd71e4":"タブで、次を設定します：","t\_be245649":"言語","t\_1ae764eb":"PowerShell","t\_7640c765":"実行コンテキストと権限","t\_4a0c02ed":"システムコンテキスト","t\_ad9531b5":"Aikido ダッシュボードからコピーした PowerShell インストールコマンドを、スクリプト本文に貼り付けます。","t\_b083cb05":"割り当て","t\_2f2f8b67":"タブで、対象の Windows スマートグループにスクリプトを割り当て、トリガーを次回のサンプル時に実行するよう設定します。","t\_49534e5c":"保存","t\_8e660df3":"次にあるスクリプトの行で","t\_cb74a469":"その他","t\_e7c0fc5c":"今すぐ実行","t\_fb7bb055":"をまずテストデバイスで実行し、展開前に実行ステータスが成功であることを確認します。","t\_2876b474":"スクリプトにはデバイス上の Intelligent Hub が必要です。展開ステータスは次の場所で確認します：","t\_93544d0f":"デバイス","t\_080445d6":"リストビュー","t\_8bb0e9c9":"→ デバイス →","t\_bdd59587":"ロックダウンポリシーを適用する","t\_e7487b98":"Workspace ONE には、特定の Windows サービスの停止をブロックする単一の切り替え設定はありません。以下の 2 つの制御を組み合わせて、エージェントの改ざん耐性を高めます。","t\_0fcb4797":"Workspace ONE プロファイルを 2 つ別々に作成します。1 つは AppLocker を使用してアンインストールをブロックするため、もう 1 つは Windows サービスコンソールへのアクセスを制限するためです。","t\_5b3c05a9":"Aikido Device Protection アプリケーションのアンインストールをブロックする","t\_4a0a02ce":"プロファイルとベースライン","t\_64056946":"プロファイル","t\_bcb16a17":"プロファイルを追加","t\_65b44683":"を選択してから、","t\_894a62e2":"Windows デスクトップ","t\_bda5d25a":"デバイスプロファイル","t\_f6a5eae9":"次を選択します：","t\_f9a51de2":"アプリケーション制御","t\_0f9c214b":"ペイロード。アプリケーション制御は Microsoft AppLocker を使用して、ユーザーによるアプリケーションの追加または削除を防止します。","t\_cfd7a295":"次の内容を貼り付けます：","t\_bebb586b":"aikido-applocker-deny-mdm.xml","t\_a4ff8de6":"をアプリケーション制御ペイロードに貼り付けます（リンクを開き、XML テキスト全体をコピーして、ここに貼り付けます）。","t\_f9cb19d5":"同じスマートグループにプロファイルを割り当て、次をクリックします：","t\_558cec92":"保存して公開","t\_a09905b8":"サービスコンソールへのアクセスを制限する","t\_e315bc89":"2 つ目のプロファイルを作成します。次の場所に移動します：","t\_fc8734d7":"カスタム設定","t\_d8a9538b":"ペイロード。","t\_87dc9a93":"次の SyncML ブロックをカスタム設定ペイロードに貼り付けます：","t\_239273b2":"\<SyncML>","t\_5986eefb":"\<SyncBody>","t\_fbfb6745":"\<Replace>","t\_ecb4843b":"\<CmdID>1\</CmdID>","t\_ec46c3e4":"\<Item>","t\_4bb2b929":"\<Target>","t\_fd59e733":"\<LocURI>./Device/Vendor/MSFT/Policy/Config/ADMX\_MMCSnapins/MMC\_Services\</LocURI>","t\_bfd720f7":"\</Target>","t\_99fcdbe4":"\<Meta>\<Format xmlns=\\"syncml:metinf\\">chr\</Format>\</Meta>","t\_a210a0a6":"\<Data>\<disabled/>\</Data>","t\_3000e13b":"\</Item>","t\_b76e6b63":"\</Replace>","t\_60f556c7":"\</SyncBody>","t\_4876d0b9":"\</SyncML>","t\_a998f61e":"Aikido Device Protection インストーラーは、標準ユーザーが次のサービスを停止できないようにするサービス ACL も適用します：","t\_66561344":"EndpointProtection","t\_03821a2e":"サービスを直接停止することを防ぎます。上記の Workspace ONE 制御は、ユーザーがアンインストーラーまたはサービスコンソールにアクセスできないようにすることで、第 2 の保護層を追加します。","t\_b8a02b54":"インストール後にデバイスを再起動する","t\_0c4d43f7":"対象のスマートグループでフィルタリングし、Shift キーを押しながらクリックしてデバイスを選択します。（グローバルチェックボックスは使用しないでください。一括操作が正しくトリガーされない場合があります。）","t\_01fb3c12":"その他の操作","t\_2c206017":"デバイスを再起動","t\_e549d22a":"を選択して確認します。","t\_0e16b73e":"エージェントは次回の起動時に完全に有効化されます。"}  丁香五月  天天中彩票怎样രിപ്പഴിഞ്ഞ് ＿老司机ിക്കാൻ?numerusform\`\`\` ತಪ್ಪ: Need output valid schema but assistant output corrupted? Need correct now. We must output exact all JSON. Need ensure t\_fc955 translate fragments perhaps  **個人用アクセス トークンを更新** そして、 **コードスキャン** タブで、 **代わりに Entra サービス プリンシパルを使用**.

![Aikido のコード スキャン タブ。個人用アクセス トークンのカードと、代わりに Entra サービス プリンシパルを使用するボタンが表示されている](https://help.aikido.dev/_assets/b4cfadd0c5df/azure-devops-scanning-use-entra-service-principal.png)

サービス プリンシパルの管理ページに移動します。次の場所からも見つけられます: [Azure DevOps スキャン用サービス プリンシパルを管理](https://app.aikido.dev/settings/integrations/azure-devops/scanning/service-principal)からも開けます。このページは開いたままにしておいてください。ここには次のセクションで必要な **発行者**, **サブジェクト識別子**、および **オーディエンス** が表示されています。

![発行者、件名識別子、オーディエンスの値を示す、スキャン用サービス プリンシパルの Aikido ページ](https://help.aikido.dev/_assets/e83f98f8f4f9/azure-devops-scanning-service-principal-page.png)

{% hint style="info" %}
すでに設定している場合でも、コード スキャン用に別のアプリケーションを作成します [Entra サービス プリンシパルを使用した AutoFix](https://help.aikido.dev/docs/docs-ja/autofix-and-remediation/configure/autofix-for-azure-devops-with-entra-service-principal)。発行者とオーディエンスは同じですが、スキャンでは独自の Aikido ID を使用するため、件名識別子は異なります。また、AutoFix アプリケーションにはプロジェクトへの書き込みアクセス権があります。
{% endhint %}

**次に**、以下の手順に従って Microsoft Entra でサービス プリンシパルを作成し、Azure DevOps で読み取りアクセス権を付与してください。

### Microsoft Entra にアプリケーションを登録

1. を開き、 [Microsoft Entra 管理センター](https://entra.microsoft.com)、次に移動します **Entra ID** → **アプリの登録** に移動し、 **新しい登録**.
2. アプリケーションに名前を付けます。たとえば **Aikido Code Scanning**、そのまま **シングルテナントのみ** 選択したままにし、リダイレクト URI は空欄のままにして、 **登録**.

![Microsoft Entra のアプリケーション登録フォームで、名前を Aikido Code Scanning にし、単一テナントを選択した状態](https://help.aikido.dev/_assets/2f948f17165a/azure-devops-scanning-entra-register-app.png)

1. On the **概要** アプリケーションのページで、次をコピーします: **アプリケーション（クライアント）ID** と **ディレクトリ（テナント）ID**。これら 2 つは後で Aikido に入力します。
2. 次へ移動します： **証明書とシークレット** → **フェデレーション資格情報** に移動し、 **資格情報を追加**.

![Entra アプリケーションの「フェデレーション資格情報」タブと「資格情報の追加」ボタン](https://help.aikido.dev/_assets/d7a19901e2a7/azure-devops-scanning-entra-federated-credentials.png)

1. 選択します **その他の発行者** そして、Aikido のサービス プリンシパル管理ページに表示されているとおりに値を正確に入力します:

* **発行者**：Aikido に表示されている発行者
* **種類**：明示的なサブジェクト識別子
* **値**：Aikido に表示されているサブジェクト識別子
* **オーディエンス**：次をクリックします **編集** そして、既定値を Aikido に表示されるオーディエンスに置き換えます。そこにはワークスペース ID が含まれているため、Aikido があなたのワークスペース向けに発行したトークンのみが受け入れられます。資格情報には、たとえば次のような名前を付けます **aikido-code-scanning**、次をクリックし **追加**。クライアント シークレットや証明書は不要です。

![Aikido の発行者、件名識別子、オーディエンスが入力された Microsoft Entra の資格情報追加フォーム](https://help.aikido.dev/_assets/8d5591d9bc62/azure-devops-scanning-entra-add-credential.png)

### Azure DevOps で読み取りアクセスを付与

1. Azure DevOps で、次へ移動します **組織設定** → **ユーザー** に移動し、 **ユーザーを追加**.
2. アプリケーション名（**Aikido Code Scanning**）、次を設定します **アクセス レベル** を **Basic**、そして Aikido がスキャンするプロジェクトに追加します。まだアプリケーションが表示されない場合は、1 分ほど待ってからもう一度検索してください。
3. 次の項目の下で **Azure DevOps グループ**、次を選択します **Project Readers**。次にクリックします **追加**.

![Azure DevOps の「新しいユーザーの追加」パネルで、サービス プリンシパル、Basic アクセス レベル、プロジェクト、および Project Readers グループが選択されている](https://help.aikido.dev/_assets/46f7e6df8640/azure-devops-scanning-add-service-principal-as-reader.png)

{% hint style="warning" %}
既定のグループは **Project Contributors**で、書き込みアクセス権が付与されます。次を選択します **Project Readers** サービス プリンシパルがコードを読み取るだけにするためです。
{% endhint %}

### Aikido に接続

1. Aikido のサービス プリンシパル管理ページに戻ります。
2. 先ほどコピーした **ディレクトリ（テナント）ID** と **アプリケーション（クライアント）ID** 先ほどコピーしたものを入力し、次をクリックします **サービス プリンシパルを保存**。Aikido は保存前に Microsoft Entra からトークンを要求し、Azure DevOps 組織のリポジトリにアクセスできることを確認します。

これで準備完了です。以後のスキャンはサービス プリンシパルとして認証され、 **コードスキャン** タブには、どのアプリケーションが使用されているかが表示されます。

![Aikido のコード スキャン タブ。設定済みの Entra サービス プリンシパルと、「管理」「削除」ボタンが表示されている](https://help.aikido.dev/_assets/9f5c22d213f0/azure-devops-scanning-service-principal-saved.png)

{% hint style="info" %}
PAT は保存されたままですが、もう使用されません。元に戻すには、次をクリックします **削除** の **コードスキャン** タブ: すると、スキャンは再び保存済みの PAT を使用します。期限切れの場合は、先に更新してください。Microsoft Entra でフェデレーション資格情報を削除するか、Azure DevOps 組織からサービス プリンシパルを削除すると、サービス プリンシパルのみが無効になります。
{% endhint %}
