Azure DevOps は、ソフトウェア開発のライフサイクル全体をサポートする強力なプラットフォームです。しかし、初めて使用する方や、特定の機能に不慣れな方にとっては、その豊富な機能が時として複雑に感じられることがあります。今回は、Azure DevOps の重要な機能の一つである Azure Pipelines を使用して、Azure Container Registry (ACR) にコンテナイメージをプッシュする際の注意点とベストプラクティスについて詳しく解説します。
Azure DevOps は、Microsoft が提供する開発者向けのサービスセットです。計画立案、コード管理、ビルド自動化、テスト、デプロイメントなど、アプリケーション開発のあらゆる段階をサポートします。その中でも Azure Pipelines は、継続的インテグレーション/継続的デリバリー (CI/CD) を実現するための強力なツールです。
Azure Pipelines を使って ACR にコンテナイメージをプッシュする際、多くの場合サービスコネクションを利用します。サービスコネクションは、外部サービス(この場合は ACR)との安全な接続を確立するための仕組みです。
サービスコネクションを Docker Registry コネクションとして作成し、ACR 用に設定する際、Authentication Type の選択が必要になります。ここで注意が必要なのは、ServicePrincipal を選択した場合の動作です。
この自動生成されるシークレットの有効期限の短さが、多くの開発者を悩ませる原因となっています。3ヶ月後に突然パイプラインが失敗し始めるため、その原因特定に時間がかかることもあります。
各対策の詳細について、以下で解説します。
この問題に対する一つの解決策は、有効期限が無期限のシークレットを作成することです。一方で、これには注意点があります。
無期限のシークレット作成手順とその注意点について見ていきましょう。
az ad app credential reset --id <Application ID or Object ID> --append --end-date "2299-12-31"
このコマンドにより、2299年12月31日まで有効な(事実上無期限の)シークレットが作成されます。
コマンドの詳細は公式ドキュメントを参照してください。
無期限シークレットの使用はセキュリティリスクを増大させる可能性があります。
定期的なローテーションや監視が重要です。
もう一つの、そしてより推奨される対策は、Workload Identity federation を使用することです。これは比較的新しい認証方式で、多くの利点があります。
Workload Identity federation とは、Azure サービスで実行されるアプリケーションやワークロードが、Microsoft Entra ID のアイデンティティを使用して他の Azure リソースに安全にアクセスできるようにする機能です。この方式では、従来のサービスプリンシパルや管理 ID に依存せずに、 Entra ID ( 旧 Azure AD) のアイデンティティを使用して Azure リソースへのアクセス権を委任・管理できます。
Workload Identity federation を使用するには、サービスコネクションの作成時に Authentication Type を “Workload Identity federation” として選択するだけです。
これにより、Microsoft Entra ID のアプリのフェデレーション資格情報として Azure DevOps の情報が追加されます。
Microsoft Entra ID アプリケーション
Microsoft も Workload Identity federation の使用を推奨しているため、新規にサービスコネクションを作成する場合は、この方式を選択することをお勧めします。
Azure DevOps から Azure Pipelines を使用して ACR にコンテナイメージをプッシュする際、サービスコネクションの設定は重要なポイントです。
特に注意すべき点は以下の通りです:
Azure DevOps や Azure Pipelines を効果的に活用するためには、これらの注意点を理解し、適切な認証方式を選択することが重要です。特に Workload Identity federation は、セキュリティと利便性のバランスが取れた優れた選択肢となります。
Azure の世界は常に進化しており、新しい機能や best practices が登場し続けています。そのため、定期的に公式ドキュメントを確認し、最新の情報をキャッチアップすることをお勧めします。Azure DevOps と Azure Pipelines を使いこなすことで、より効率的で安全なアプリケーション開発・運用が可能になります。
弊社ではAzure構築・アドバイザリーサービスを提供しております。
マイクロソフト出身、 Azure 認定資格を保持するエンジニアが Azure に関するアドバイスや、環境構築などのご支援をいたします。
また、マイクロソフトのAzureサポートとのやり取りも弊社にお任せいただけます。
サポート担当とのやり取りは、慣れていない場合適切な情報を引き出すことができず、連絡の往復が続き問題解決までに時間がかかることが多いです。
弊社のアドバイザリーサービスでは、弊社で回答できる部分は迅速に回答し、Azure内部の調査が必要な場合などはAzureサポートと連携して問題解決にあたることができます。
Azure をより活用し、最適な構成を構築するご支援をいたしますので、ご検討の方はお気軽にお問い合わせください。