Skip to content

Instantly share code, notes, and snippets.

@kkamegawa
Created September 3, 2023 08:32
Show Gist options
  • Save kkamegawa/da96189c43ba101414161ee65f1ee037 to your computer and use it in GitHub Desktop.
Save kkamegawa/da96189c43ba101414161ee65f1ee037 to your computer and use it in GitHub Desktop.

セキュリティ管理が強化されます - Sprint226

In this article

今回の更新より、プロジェクトまたはOrganization全体のAdvanced Securityを有効または無効にするオプションが追加されました。また、新しく作成されたリポジトリやプロジェクトのAdvanced Securityを自動的に有効にすることもできます。

Azure Pipelines では、フォークされた GitHub リポジトリからビルドされたPull Requestのセキュリティを向上させるための集中管理機能が追加されました。

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

プロジェクトまたはOrganization全体でAdvanced Securityを有効または無効にできるようになりました。有効にする前にコミッター数を表示する機能が追加されたことに伴い、プロジェクトまたはOrganizationレベルで"Enable all"を選択すると、課金対象となる新しいアクティブなコミッター数の見積もりが表示されます。また、プロジェクトやOrganizationの下に新しく作成されたリポジトリやプロジェクトに対して、Advanced Securityを自動的に有効にすることもできます。この設定で有効になったリポジトリは、secret scanningやpush protectionが有効になります。

プロジェクトレベルで有効化する場合:

Screenshot of Project-level enablement.

Organizationレベルで有効化する場合:

Screenshot of Organization-level enablement.

Advanced Securityオンボーディングエクスペリエンスの一環として、特定のリポジトリ、プロジェクト、またはOrganizationでAdvanced Securityを有効にした結果、アクティブなコミッターが何人追加されたかの概算を確認できるようになりました。このカウントは概算であり、提供された概算と有効化後に請求のために報告されるものとの間に若干の相違が見られるかもしれません。この見積もりはAPI経由で取得することもでき、このプロセスを説明する追加ドキュメントも近日公開予定です。

Screenshot of Advanced Security enablement.

承認やチェックがタイムアウトすると、対象のステージはスキップされます。スキップされたステージに依存するステージもスキップされます。

承認やチェックがタイムアウトした場合、対象のステージを再試行できるようになりました。以前は、承認がタイムアウトした場合のみ可能でした。

Screenshot of stage retry.

YAML パイプラインのEnvironmentsはAKSクラスターや複数のVMに対するデプロイのセキュリティコントロールとトレーサビリティを提供します。

Enviornmentsの管理は非常に難しいです。Enviornmentを作成すると、作成者が自動的に唯一の管理者になるからです。例えば、すべてのEnvironmentに対する承認とチェックを一元的に管理したい場合、すべてのEnviornments管理者に特定のユーザーやグループを管理者として追加してもらい、REST APIを使ってチェックを設定しなければなりませんでした。このアプローチは面倒で、エラーが発生しやすく、新しいEnviornmentsが追加されたときにスケールしないという問題があります。

このスプリントでは、environments-hub レベルのAdministrator Roleを追加しました。これにより、Enviornmentsはサービス接続やエージェントプールと同等になります。管理者ロールをユーザーやグループに割り当てるには、すでにenvironments-hubの管理者またはOrganizationの所有者である必要があります。

Screenshot of Administrator role.

このAdministrator Roleを持つユーザーは、あらゆるEnviornmentsの権限管理、管理、表示、使用ができます。これには、すべてのパイプラインにEnviornmentsを開放することも含まれます。

environments-hubレベルでユーザーにAdministrator Roleを付与すると、そのユーザーはすべての既存Enviornmentsと将来のEnviornmentsのAdministratorになります。

GitHubからパブリックリポジトリをビルドする場合は、フォークビルドに対するスタンスを考慮する必要があります。フォークビルドは特に危険です。

GitHubパブリックリポジトリをビルドするパイプラインのセキュリティを向上させるには、GitHub リポジトリのビルド方法リポジトリの保護に関する推奨事項をご覧ください。残念ながら、多数のパイプラインを管理し、ベストプラクティスの遵守を徹底するには、かなりの労力が必要になります。

パイプラインのセキュリティを強化するために、OrganizationレベルでパイプラインがフォークしたGitHubリポジトリからPull Requestをビルドする方法を定義する制御方法を追加しました。新しい設定は Limit building pull requests from forked GitHub repositories と名付けられ、Organizationレベルとプロジェクトレベルで有効になっています。

Organizationレベルの設定はプロジェクトで設定可能な項目を制限し、プロジェクトレベルの設定はパイプラインでの設定を制限します。

Organizationレベルでのトグルの仕組みを見てみましょう。新しいコントロールはデフォルトでオフになっているため、どの設定もプロジェクトに適用されません。

Screenshot of toggle organization level.

このトグルをオンにすると、フォークしたGitHubリポジトリからのPRのビルドを無効にします。つまり、Pull Requestが作成されたときにパイプラインは実行されません。

Screenshot of showing toggle on.

Securely build pull requests from forked repositoriesオプションを選択すると、Organization内のすべてのパイプラインは、フォークされたリポジトリからのPull Requestのビルドで秘密情報を利用できなくなり、これらのビルドに通常のビルドと同じ権限を持たせることができなくなります。プロジェクトにおいて、このようなPull Requestのビルドをパイプラインに許可しないという状況を強制できます。

Screenshot of Securely build PR.

Customizeオプションを選択すると、パイプラインの設定を制限する方法を定義できます。たとえば、フォークしたGitHubリポジトリからPull Requestをビルドする際に、すべてのパイプラインでコメントを必須にできます。そのうえ、そのようなビルドでシークレットを利用可能にもできます。プロジェクトは、そのようなPull Requestのビルドをパイプラインに許可しないようにしたり、安全にビルドするようにしたり、Organizationレベルで指定するよりもさらに制限を厳しくできます。

Screenshot of Customize.

私たちはAzure Artifactsにおいて、Cargo cratesをネイティブサポートできるようになったと発表できることを嬉しく思います。このサポートには、crates.ioがアップストリームソースとして利用可能であることに加え、既存のプロトコルと同等の機能が含まれています。Rust開発者とチームは、Azureの堅牢なインフラストラクチャを使用し、使い慣れたAzure DevOps環境にいながら、Cargo cratesをシームレスに利用、公開、管理、共有できるようになりました。

Azure DevOpsプロジェクトに移動してArtifactsを選択し、指示に従ってRustプロジェクトをAzure Artifactsフィードに接続することで開始できます。

注意事項

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

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

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

Make a suggestion

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

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

Silviu Andrica

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