Codeers Conquer Security Infrastructure as Codeシリーズ。セキュリティの設定ミス - 不適切なパーミッション
昨今のサイバーセキュリティへの脅威は、どこにでもあり、容赦ないものです。あまりにもひどいので、プログラムが導入された後にそれらに対応しようとするのはほとんど不可能になっています。その代わりに、賢明な企業は、Infrastructure as Codeというコンセプトを採用しています。これにより、開発者は、作成中のアプリケーションの安全性を高めることができます。このシリーズでは、開発者がコードとしての安全なインフラストラクチャを組織に導入するための手順を理解することで、セキュリティに対する準備を整えることを目的としています。
セキュリティの誤設定、特に不適切なパーミッションに関する誤設定は、開発者があるタスクを達成するために、新しいユーザーを作成したり、ツールとしてのアプリケーションにパーミッションを与えたりしたときに最もよく起こります。例えば、データベースから情報を収集するために行われることがあります。しかし、新規ユーザーのパーミッションが高く設定されていたり、目前のタスクに対してデフォルトで設定されていなかったりすると、コードに深刻な脆弱性をもたらすことになります。
本題に入る前に、今すぐ自分のスキルを試してみませんか?いくつかの不適切なパーミッションの脆弱性を見つけて修正してみてください。
あなたはどうでしたか?もう少し掘り下げてみましょう。
ユーザーやアプリケーションにフルパーミッションを与えたり、新しいユーザーがどのようなことができるのか、どのような動作が制限されるのかを定義することを気にしないことは、確かに新しいコードを導入するための最も早い方法です。そして、すべてが完璧にうまくいけば、アプリケーションは、割り当てられたタスクを達成するために、それらのパーミッションを利用します。危険なのは、ハッカーがこのプロセスを発見して、そのユーザーを危険にさらすことです。ユーザーは、特定のアプリケーションのために特定の機能を達成するために作成されたにもかかわらず、侵害されると、攻撃者は他のアプリケーションやデータ、さらにはネットワークを危険にさらすことができます。
セキュリティ上のミスコンフィグレーションはどのように利用されるのか?
その危険性を視覚化するために、よくあるタスクがDockerクラウド環境内でどのようにコーディングされることがあるかを見てみましょう。例えば、開発者がPrometheus MySQL Exporterサービスを使って、データベースから情報を収集しているとします。それを可能にする最も簡単な方法は、Exporterにデータベースへのアクセス許可を与えることです。つまり、コードは次のようなものになるでしょう。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT ALL ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
そうすれば、確かにエクスポーターは任務を遂行することができます。しかし、パーミッションが定義されていないため、エクスポーターは実際にはほとんど何でもできるようになっています。もちろん、エクスポーター自身がプログラムされた行動以外のことをすることはありません。しかし、攻撃者がエクスポーターのサービスを侵害することができたとしたらどうなるでしょうか。その場合、完全な権限が与えられているので、攻撃者はSQLサービスであらゆる種類の不正なタスクを実行することができます。
不適切なパーミッションの確保と排除
ここで再び、「コードとしてのインフラ」というコンセプトが登場します。アプリケーションの作成時にセキュリティをコード化しておけば、サイバーセキュリティに関して、ネットワークは常に全体的に有利な立場にあることになります。
上のDockerの例では、開発者がPrometheus MySQL Exporterにデータベースへの問い合わせをさせたい場合、何をさせるべきかを定義することで、より安全にそれを実現することができます。この良い例は次のようになります。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
この場合、Prometheus MySQL Exporter サービスに設定された MySQL ユーザーは、MySQL サービスに対して制限された権限しか持ちません。具体的には、「PROCESS」と「REPLICATION CLIENT」の権限のみが許可されています。これにより、悪意のあるユーザーが、妥協したPrometheus MySQL Exporterサービスを利用することを防ぐことができます。
コードレベルでパーミッションを制限することで、ユーザーやアプリケーションは、目の前のタスクに必要なパーミッションだけを持つことができます。これは、ネットワークの安全性を確保し、Infrastructure as Codeのコンセプトを採用する上で、大きな意味を持ちます。
Secure Code Warriorブログでは、今回の脆弱性について、また、他のセキュリティ上の欠陥の被害から組織や顧客を守る方法について、さらに詳しい情報を提供しています。また、Secure Code Warrior トレーニングプラットフォームのショーケースでは、サイバーセキュリティに関するすべてのスキルを磨き上げ、最新の状態に保つことができます。
セキュリティの誤設定、特に不適切なパーミッションに関する誤設定は、開発者がタスクを遂行するために新しいユーザーを作成したり、ツールとしてのアプリケーションにパーミッションを与えたりする際によく起こります。
Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。
Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。
デモを予約するMatias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。
マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者・開発者です。フォーティファイ・ソフトウェア社や自身の会社(Sensei Security)などでソリューションを開発してきました。キャリアの中で、Matiasは、商用製品につながる複数のアプリケーションセキュリティ研究プロジェクトを主導し、10件以上の特許を取得しています。また、RSAカンファレンス、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどの世界的なカンファレンスで定期的に講演を行っているほか、高度なアプリケーションセキュリティトレーニング(courses )の講師も務めています。
Matiasはゲント大学でコンピュータ工学の博士号を取得し、アプリケーションの内部構造を隠すためのプログラム難読化によるアプリケーションセキュリティを研究しました。
昨今のサイバーセキュリティへの脅威は、どこにでもあり、容赦ないものです。あまりにもひどいので、プログラムが導入された後にそれらに対応しようとするのはほとんど不可能になっています。その代わりに、賢明な企業は、Infrastructure as Codeというコンセプトを採用しています。これにより、開発者は、作成中のアプリケーションの安全性を高めることができます。このシリーズでは、開発者がコードとしての安全なインフラストラクチャを組織に導入するための手順を理解することで、セキュリティに対する準備を整えることを目的としています。
セキュリティの誤設定、特に不適切なパーミッションに関する誤設定は、開発者があるタスクを達成するために、新しいユーザーを作成したり、ツールとしてのアプリケーションにパーミッションを与えたりしたときに最もよく起こります。例えば、データベースから情報を収集するために行われることがあります。しかし、新規ユーザーのパーミッションが高く設定されていたり、目前のタスクに対してデフォルトで設定されていなかったりすると、コードに深刻な脆弱性をもたらすことになります。
本題に入る前に、今すぐ自分のスキルを試してみませんか?いくつかの不適切なパーミッションの脆弱性を見つけて修正してみてください。
あなたはどうでしたか?もう少し掘り下げてみましょう。
ユーザーやアプリケーションにフルパーミッションを与えたり、新しいユーザーがどのようなことができるのか、どのような動作が制限されるのかを定義することを気にしないことは、確かに新しいコードを導入するための最も早い方法です。そして、すべてが完璧にうまくいけば、アプリケーションは、割り当てられたタスクを達成するために、それらのパーミッションを利用します。危険なのは、ハッカーがこのプロセスを発見して、そのユーザーを危険にさらすことです。ユーザーは、特定のアプリケーションのために特定の機能を達成するために作成されたにもかかわらず、侵害されると、攻撃者は他のアプリケーションやデータ、さらにはネットワークを危険にさらすことができます。
セキュリティ上のミスコンフィグレーションはどのように利用されるのか?
その危険性を視覚化するために、よくあるタスクがDockerクラウド環境内でどのようにコーディングされることがあるかを見てみましょう。例えば、開発者がPrometheus MySQL Exporterサービスを使って、データベースから情報を収集しているとします。それを可能にする最も簡単な方法は、Exporterにデータベースへのアクセス許可を与えることです。つまり、コードは次のようなものになるでしょう。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT ALL ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
そうすれば、確かにエクスポーターは任務を遂行することができます。しかし、パーミッションが定義されていないため、エクスポーターは実際にはほとんど何でもできるようになっています。もちろん、エクスポーター自身がプログラムされた行動以外のことをすることはありません。しかし、攻撃者がエクスポーターのサービスを侵害することができたとしたらどうなるでしょうか。その場合、完全な権限が与えられているので、攻撃者はSQLサービスであらゆる種類の不正なタスクを実行することができます。
不適切なパーミッションの確保と排除
ここで再び、「コードとしてのインフラ」というコンセプトが登場します。アプリケーションの作成時にセキュリティをコード化しておけば、サイバーセキュリティに関して、ネットワークは常に全体的に有利な立場にあることになります。
上のDockerの例では、開発者がPrometheus MySQL Exporterにデータベースへの問い合わせをさせたい場合、何をさせるべきかを定義することで、より安全にそれを実現することができます。この良い例は次のようになります。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
この場合、Prometheus MySQL Exporter サービスに設定された MySQL ユーザーは、MySQL サービスに対して制限された権限しか持ちません。具体的には、「PROCESS」と「REPLICATION CLIENT」の権限のみが許可されています。これにより、悪意のあるユーザーが、妥協したPrometheus MySQL Exporterサービスを利用することを防ぐことができます。
コードレベルでパーミッションを制限することで、ユーザーやアプリケーションは、目の前のタスクに必要なパーミッションだけを持つことができます。これは、ネットワークの安全性を確保し、Infrastructure as Codeのコンセプトを採用する上で、大きな意味を持ちます。
Secure Code Warriorブログでは、今回の脆弱性について、また、他のセキュリティ上の欠陥の被害から組織や顧客を守る方法について、さらに詳しい情報を提供しています。また、Secure Code Warrior トレーニングプラットフォームのショーケースでは、サイバーセキュリティに関するすべてのスキルを磨き上げ、最新の状態に保つことができます。
昨今のサイバーセキュリティへの脅威は、どこにでもあり、容赦ないものです。あまりにもひどいので、プログラムが導入された後にそれらに対応しようとするのはほとんど不可能になっています。その代わりに、賢明な企業は、Infrastructure as Codeというコンセプトを採用しています。これにより、開発者は、作成中のアプリケーションの安全性を高めることができます。このシリーズでは、開発者がコードとしての安全なインフラストラクチャを組織に導入するための手順を理解することで、セキュリティに対する準備を整えることを目的としています。
セキュリティの誤設定、特に不適切なパーミッションに関する誤設定は、開発者があるタスクを達成するために、新しいユーザーを作成したり、ツールとしてのアプリケーションにパーミッションを与えたりしたときに最もよく起こります。例えば、データベースから情報を収集するために行われることがあります。しかし、新規ユーザーのパーミッションが高く設定されていたり、目前のタスクに対してデフォルトで設定されていなかったりすると、コードに深刻な脆弱性をもたらすことになります。
本題に入る前に、今すぐ自分のスキルを試してみませんか?いくつかの不適切なパーミッションの脆弱性を見つけて修正してみてください。
あなたはどうでしたか?もう少し掘り下げてみましょう。
ユーザーやアプリケーションにフルパーミッションを与えたり、新しいユーザーがどのようなことができるのか、どのような動作が制限されるのかを定義することを気にしないことは、確かに新しいコードを導入するための最も早い方法です。そして、すべてが完璧にうまくいけば、アプリケーションは、割り当てられたタスクを達成するために、それらのパーミッションを利用します。危険なのは、ハッカーがこのプロセスを発見して、そのユーザーを危険にさらすことです。ユーザーは、特定のアプリケーションのために特定の機能を達成するために作成されたにもかかわらず、侵害されると、攻撃者は他のアプリケーションやデータ、さらにはネットワークを危険にさらすことができます。
セキュリティ上のミスコンフィグレーションはどのように利用されるのか?
その危険性を視覚化するために、よくあるタスクがDockerクラウド環境内でどのようにコーディングされることがあるかを見てみましょう。例えば、開発者がPrometheus MySQL Exporterサービスを使って、データベースから情報を収集しているとします。それを可能にする最も簡単な方法は、Exporterにデータベースへのアクセス許可を与えることです。つまり、コードは次のようなものになるでしょう。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT ALL ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
そうすれば、確かにエクスポーターは任務を遂行することができます。しかし、パーミッションが定義されていないため、エクスポーターは実際にはほとんど何でもできるようになっています。もちろん、エクスポーター自身がプログラムされた行動以外のことをすることはありません。しかし、攻撃者がエクスポーターのサービスを侵害することができたとしたらどうなるでしょうか。その場合、完全な権限が与えられているので、攻撃者はSQLサービスであらゆる種類の不正なタスクを実行することができます。
不適切なパーミッションの確保と排除
ここで再び、「コードとしてのインフラ」というコンセプトが登場します。アプリケーションの作成時にセキュリティをコード化しておけば、サイバーセキュリティに関して、ネットワークは常に全体的に有利な立場にあることになります。
上のDockerの例では、開発者がPrometheus MySQL Exporterにデータベースへの問い合わせをさせたい場合、何をさせるべきかを定義することで、より安全にそれを実現することができます。この良い例は次のようになります。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
この場合、Prometheus MySQL Exporter サービスに設定された MySQL ユーザーは、MySQL サービスに対して制限された権限しか持ちません。具体的には、「PROCESS」と「REPLICATION CLIENT」の権限のみが許可されています。これにより、悪意のあるユーザーが、妥協したPrometheus MySQL Exporterサービスを利用することを防ぐことができます。
コードレベルでパーミッションを制限することで、ユーザーやアプリケーションは、目の前のタスクに必要なパーミッションだけを持つことができます。これは、ネットワークの安全性を確保し、Infrastructure as Codeのコンセプトを採用する上で、大きな意味を持ちます。
Secure Code Warriorブログでは、今回の脆弱性について、また、他のセキュリティ上の欠陥の被害から組織や顧客を守る方法について、さらに詳しい情報を提供しています。また、Secure Code Warrior トレーニングプラットフォームのショーケースでは、サイバーセキュリティに関するすべてのスキルを磨き上げ、最新の状態に保つことができます。
以下のリンクをクリックし、この資料のPDFをダウンロードしてください。
Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。
レポートを見るデモを予約するMatias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。
マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者・開発者です。フォーティファイ・ソフトウェア社や自身の会社(Sensei Security)などでソリューションを開発してきました。キャリアの中で、Matiasは、商用製品につながる複数のアプリケーションセキュリティ研究プロジェクトを主導し、10件以上の特許を取得しています。また、RSAカンファレンス、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどの世界的なカンファレンスで定期的に講演を行っているほか、高度なアプリケーションセキュリティトレーニング(courses )の講師も務めています。
Matiasはゲント大学でコンピュータ工学の博士号を取得し、アプリケーションの内部構造を隠すためのプログラム難読化によるアプリケーションセキュリティを研究しました。
昨今のサイバーセキュリティへの脅威は、どこにでもあり、容赦ないものです。あまりにもひどいので、プログラムが導入された後にそれらに対応しようとするのはほとんど不可能になっています。その代わりに、賢明な企業は、Infrastructure as Codeというコンセプトを採用しています。これにより、開発者は、作成中のアプリケーションの安全性を高めることができます。このシリーズでは、開発者がコードとしての安全なインフラストラクチャを組織に導入するための手順を理解することで、セキュリティに対する準備を整えることを目的としています。
セキュリティの誤設定、特に不適切なパーミッションに関する誤設定は、開発者があるタスクを達成するために、新しいユーザーを作成したり、ツールとしてのアプリケーションにパーミッションを与えたりしたときに最もよく起こります。例えば、データベースから情報を収集するために行われることがあります。しかし、新規ユーザーのパーミッションが高く設定されていたり、目前のタスクに対してデフォルトで設定されていなかったりすると、コードに深刻な脆弱性をもたらすことになります。
本題に入る前に、今すぐ自分のスキルを試してみませんか?いくつかの不適切なパーミッションの脆弱性を見つけて修正してみてください。
あなたはどうでしたか?もう少し掘り下げてみましょう。
ユーザーやアプリケーションにフルパーミッションを与えたり、新しいユーザーがどのようなことができるのか、どのような動作が制限されるのかを定義することを気にしないことは、確かに新しいコードを導入するための最も早い方法です。そして、すべてが完璧にうまくいけば、アプリケーションは、割り当てられたタスクを達成するために、それらのパーミッションを利用します。危険なのは、ハッカーがこのプロセスを発見して、そのユーザーを危険にさらすことです。ユーザーは、特定のアプリケーションのために特定の機能を達成するために作成されたにもかかわらず、侵害されると、攻撃者は他のアプリケーションやデータ、さらにはネットワークを危険にさらすことができます。
セキュリティ上のミスコンフィグレーションはどのように利用されるのか?
その危険性を視覚化するために、よくあるタスクがDockerクラウド環境内でどのようにコーディングされることがあるかを見てみましょう。例えば、開発者がPrometheus MySQL Exporterサービスを使って、データベースから情報を収集しているとします。それを可能にする最も簡単な方法は、Exporterにデータベースへのアクセス許可を与えることです。つまり、コードは次のようなものになるでしょう。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT ALL ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
そうすれば、確かにエクスポーターは任務を遂行することができます。しかし、パーミッションが定義されていないため、エクスポーターは実際にはほとんど何でもできるようになっています。もちろん、エクスポーター自身がプログラムされた行動以外のことをすることはありません。しかし、攻撃者がエクスポーターのサービスを侵害することができたとしたらどうなるでしょうか。その場合、完全な権限が与えられているので、攻撃者はSQLサービスであらゆる種類の不正なタスクを実行することができます。
不適切なパーミッションの確保と排除
ここで再び、「コードとしてのインフラ」というコンセプトが登場します。アプリケーションの作成時にセキュリティをコード化しておけば、サイバーセキュリティに関して、ネットワークは常に全体的に有利な立場にあることになります。
上のDockerの例では、開発者がPrometheus MySQL Exporterにデータベースへの問い合わせをさせたい場合、何をさせるべきかを定義することで、より安全にそれを実現することができます。この良い例は次のようになります。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
この場合、Prometheus MySQL Exporter サービスに設定された MySQL ユーザーは、MySQL サービスに対して制限された権限しか持ちません。具体的には、「PROCESS」と「REPLICATION CLIENT」の権限のみが許可されています。これにより、悪意のあるユーザーが、妥協したPrometheus MySQL Exporterサービスを利用することを防ぐことができます。
コードレベルでパーミッションを制限することで、ユーザーやアプリケーションは、目の前のタスクに必要なパーミッションだけを持つことができます。これは、ネットワークの安全性を確保し、Infrastructure as Codeのコンセプトを採用する上で、大きな意味を持ちます。
Secure Code Warriorブログでは、今回の脆弱性について、また、他のセキュリティ上の欠陥の被害から組織や顧客を守る方法について、さらに詳しい情報を提供しています。また、Secure Code Warrior トレーニングプラットフォームのショーケースでは、サイバーセキュリティに関するすべてのスキルを磨き上げ、最新の状態に保つことができます。
目次
Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。
Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。
デモを予約するダウンロード