Skip to content

Instantly share code, notes, and snippets.

@kkamegawa
Created October 9, 2023 03:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kkamegawa/c31917ade299e88868aff0270389ce51 to your computer and use it in GitHub Desktop.
Save kkamegawa/c31917ade299e88868aff0270389ce51 to your computer and use it in GitHub Desktop.

Azure DevOpsでGitHub Advanced Security と Managed identity と service principalの一般提供を開始します - Sprint228

In this article

GitHub Advanced Security for Azure DevOpsにおいて、Service PrincipalとManaged identityが一般提供開始される発表ができることを非常にうれしく思います。

GitHub Advanced Securityでは、CodeQL Initializeタスクにユーザーが提供したすべての入力を含めるよう、コードスキャンも改善しました。さらに、CodeQL にSwift サポートを追加しました。

Boards では、Team Automation Rules をプライベートプレビューでリリースします。各バックログレベルを設定し、子プロセスの状態に基づいてワークアイテムのオープンとクローズ/解決を自動化できるようになりました。プライベートプレビューにご興味のある方は、リリースノートをご覧ください。

これらの機能の詳細については、以下の機能リストをご覧ください。

Azure DevOpsにおけるAzure Active DirectoryのマネージドIDおよびサービスプリンシパルのサポートが、一般提供(GA)に達しました。

今日、Azure DevOpsと統合するための多くのアプリケーション統合シナリオは、Personal Access Tokens(PAT)に依存しています。PATの使用は簡単ですが、PATは簡単に流出する可能性があり、悪意のあるアクターが強力なユーザーとして認証できる可能性があります。また、不要なアクセスを防ぐために、PATはしばしば定期的なクレデンシャルのローテーションによるメンテナンスの時間が多く必要になります。

現在では、REST APIやクライアントライブラリを通じてAzure DevOpsと統合するために、Managed IdentitiesとService Principalsを代わりに使用するアプリケーションを有効にすることができます。リクエストの多かったこの機能は、Azure DevOpsのお客様に、PATに代わるよりセキュアな選択肢を提供します。Managed Identitiesは、Azureリソース上で実行されるアプリケーションが、認証情報を管理することなくAzure ADトークンの取得が可能な機能を提供します。

Managed IdentitiesとService Principalsを、Azure DevOpsでセットアップし、通常のユーザーと同様に、特定のアセット(プロジェクト、リポジトリ、パイプライン)に対する権限の付与が可能です。これにより、Managed IdentitiesやService Principalsを使用するアプリケーションは、Azure DevOpsに接続し、PATのようにユーザーの代理ではなく、自身の代理としてアクションが実行可能になります。チームは、認証のためのトークンを提供する特定の個人に依存するのではなく、サービスをまとめてよりよく管理できるようになりました。GAリリースの詳細については、ブログのアナウンスドキュメントをご覧ください。

Microsoft Identityプラットフォーム上の委任されたOAuthアプリ(俗称:Azure Active Directory OAuthアプリ)用の新しいAzure DevOpsスコープを追加しました。これらの新しいスコープにより、アプリ開発者がアプリを実行する際、ユーザーに要求したい権限を具体的に通知できるようになります。この要望の高い機能により、アプリ開発者はアプリに必要な権限のみをユーザーに要求できるようになります。

これまで、アプリ開発者が選択できるスコープはuser_impersonationだけでした。このスコープでは、アプリはすべてのAzure DevOps APIにフルアクセスでき、ユーザーが所属するすべてのorganizationでユーザーができることは何でもできていました。より詳細なスコープが利用できるようになったことで、アプリは要求されたアクセスが与えられたスコープで使用可能なAPIでのみアクセスできるので安心です。

これらの新しいスコープについての詳細は、私たちのブログのアナウンスドキュメントをご覧ください。

ユーザー提供の入力をすべて CodeQL Initialize タスクで指定できるようになりました。このタスクは、CodeQL `AdvancedSecurity-Codeql-Init@1`` によるコード解析に使用される CodeQL 解析環境の設定を担当します。GitHub Advanced Security for Azure DevOpsの設定の詳細については、GitHub Advanced Security for Azure DevOpsの機能の設定を参照してください。

また、ユーザー入力は変数で設定された値よりも優先されます。たとえば、言語変数をadvancedsecurity.codeql.language: と指定し、その後CodeQLの初期化フェーズで Language: cpp と入力として言語を指定した場合、入力 cpp は言語変数 Java を上書きします。入力が正確に構成されていることを確認してください。

以前、コードスキャンを構成するとき、YAMLパイプラインまたはクラシックパイプラインのいずれかにパブリッシュタスク(AdvancedSecurity-Publish@1)を含める必要がありました。今回の更新で、publishタスクは不要になり、結果はanalyzeタスク(AdvancedSecurity-Codeql-Analyze@1)内のadvanced security serviceに直接投稿されるようになりました。

以下は、コードスキャンに必要なタスクです。

Screenshot of required code scanning tasks.

詳細については、コード・スキャンのセットアップ・ドキュメントを参照してください。

私たちはCodeQLコードスキャンのサポートをSwiftにも拡大します!これは、Appleプラットフォーム向けのSwiftライブラリやアプリケーションに取り組んでいる開発者が、当社の一流のコードセキュリティ分析を利用できるようになったことを意味します。私たちの現在の機能には、パスインジェクション、危険なウェブビューのフェッチ、様々な暗号の悪用、フィルターされていないユーザーデータの安全でない取り扱いや処理の他の形態などの問題の検出が含まれます。

Swiftは現在、C/C++、Java/Kotlin、JavaScript/TypeScript、Python、Ruby、C#、Goを含む当社のサポート対象プログラミング言語の一部となっています。これらの言語を組み合わせることで、偽陽性の割合を低く維持し、高い精度を確保しながら、お客様のコードに対して 400 近い包括的なチェックを行うことができます。

リポジトリのGitHub Advanced Security for Azure DevOpsの設定については、configure GitHub Advanced Security for Azure DevOps features documentation をご覧ください。

各バックログレベルを設定し、子プロセスの状態に基づいてワークアイテムのオープンとクローズ/解決を自動化できるようになりました。解決しようとするシナリオは主に2つあります。

  1. 一つの子アイテムがアクティブになったら、親アイテムをアクティブにする。
  2. すべての子項目が閉じられたら、親項目を閉じる(または解決する)。

これらの設定を有効にするには、チームのバックログレベル設定をクリックします。次に、Automation > Rules タブに移動し、バックログに適用できる2つの異なるルールを確認します。各バックログ レベル(要件、フィーチャー、エピック)は、チームの作業方法に合わせて設定できます。

Screenshots of Team Settings.

例えば、子タスクがアクティブに設定されたら、親ユーザストーリーをアクティブにします。そして、すべてのタスクが完了したら、User StoryをClosedに設定します。

Gif to demo Team automation rules.

プライベートプレビューにご興味のある方は、組織名(dev.azure.com/{組織名})を明記の上、メールをお送りください。プレビューに参加できる組織の数は制限させていただきますので、ご了承ください。私たちの希望は、いくつかの組織からフィードバックをもらい、2-3スプリント以内に全員にリリースすることです。

機能の優先順位は、Developer Community の提案チケットに基づいて決定されました。

注意事項

この機能はNew Boards Hubs previewを有効にする必要があります。

Azureパイプラインログでメモリ、CPU使用率、使用可能なディスク容量などのリソース利用メトリクスを取得できるようになりました。ログには、パイプラインエージェントと、ジョブで実行されるタスクを含む子プロセスで使用されるリソースも含まれます。

Screenshot of logs including resources used by the pipeline.

パイプラインジョブがリソースの制約に遭遇する可能性がある場合、パイプラインログにリソース利用情報を注入するために、verbose logsを有効にします。これは、ホスティングモデルに依存せず、どのエージェントでも動作します。

Pipelineエージェントv3.227がAlpine Linuxバージョン3.13以上をサポートするようになりました。Alpine Linuxはコンテナ(ベース)イメージとして人気があります。エージェントはリリースページにあります。Alpine Linuxバージョンのエージェントは、vsts-agent-linux-muslという接頭辞を持っています(例:vsts-agent-linux-musl-x64-3.227.1.tar.gz)。

注意事項

ここで議論されている機能は今後二~三週にわたって順次展開されます。

Azure DevOpsサービスを体験してみてください。

これらの機能についてどう思っているかお聞きしたいと思います。 フィードバックメニューを使用して問題を報告するか、提案を提出してください。

Make a suggestion

アドバイスや回答を必要とする質問がある場合、Stack Overflowコミュニティで聞いてください。

ありがとうございました。

Rajesh Ramamurthy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment