阿里雲access keyが漏洩したのはどうしたらいいですか手でRAMの役割を規範的に配置する権限を教えてください

クラウド 2026-05-28 阅读 12
cloud

多くの技術チームはこのような「真夜中の惊魂」に遭遇したことがある。突然、阿里雲の優勝連呼やメール通知を受けた。一部の資源は高周波異常に呼び出されている… 」

制御台にログインしてみると、請求書が爆発し、サーバーはハッカーによって大量に採掘された。

このすべての原因は、多くの場合、図が手間を省いて、コード、構成ファイル、GitHub公開倉庫に直接、最高の権限を持つものをハードコードしているからである

メインアカウントaccess key (AK/SK)

。メインアカウントのAKはあなたの家の万能鍵のようなもので、漏洩すると、クラウド全体の資産はハッカーに完全に開放されることに等しい。

今日は虚しい理論を使わず、でたらめを言わない。直接手で2つの防御線を作ります

第一に、AKが漏洩してから5分後に緊急止血する第二に、どのようにしてRAMの役割を使って、ハードコードされたAKの危険性を徹底的に根絶するか。

第一段階: 緊急止血! アクセサリが漏洩した5分間の緊急ストリーム

もしあなたがAKが漏洩したことを発見したり疑ったりしたら、躊躇しないで、すぐに以下の操作を実行して、1分以上遅れても本物の銀の損失である。

手順1:全ネットで関係AKを無効または削除する

すぐに阿里雲コンソールにログインし、右上隅のアバター $ \ right arrow $ をクリックして「access key管理」を選択します。

ヒントが漏洩したaccess keyを見つけます。

まず「無効にする」をクリックします。この時点で、このAKを使用するすべてのエクストラネット要求は瞬時に403をエラーにします。

コア生産業務に影響がないことを確認した後、思い切って「削除」をクリックする。

ステップ2: ハッカーが残した「裏口」を調べる

ハッカーがAKを入手した後、最初のことは、多くの場合、自動スクリプトを使用してリソースを一括作成することです。

ECSインスタンスリスト、軽量アプリケーションサーバリストに行って、各地域(北京、上海、深セン、香港、米国など) を切り替えて、不可解なサーバがあるかどうかを見てみましょう。あれば、すぐに完全に釈放します。

監査コンソールを操作して、過去24時間以内に、このAKがどのAPIを呼び出したかを調べて、ハッカーが手足を動かしたリソースを見逃しなくつかむ。

第二段階: 治本の策 -- RAMの役割と最小権限の仕様設定

AKを削除すると、古いプロジェクトコードが直接崩れてしまいます。OSSを読み書きしたり、他のクラウドサービスを呼び出したりする権限が必要だからです。

新しいメインアカウントAKを作ることはできません。正しいやり方は:

RAMロールを使用して、アリババクラウド上で実行されているプログラムを自動的に、キーなしで一時的な権限を取得します。

次に、「クラウドサーバECS上のプログラムがOSSストレージバケットを安全に読み書きできるようにする」を例に、実戦的な配置を行う。

手順1: RAMロールを作成する (idを作成する)

コンソールで検索し、「RAMアクセス制御」に入ります。

左侧のメニューの「ロール」をクリックします。

信頼できるエンティティタイプを「阿里雲サービス」に選択し、「次へ」をクリックします。

ロールタイプ: 「一般サービスロール」を選択します。

ロール名: ECS-OSS-Reader-Roleなど、わかりやすい名前を付けます。

受信サービスの選択: この役割をクラウドサーバに貼り付けるので、ここで「クラウドサーバ」 (ECS) を選択します。

「OK」をクリックしてください。

ステップ2: 正確な許可 (余分な権限を与えない)

作成したばかりのキャラクターは白い紙で、権限はありません。私たちは「最小権限の原則」に従って許可証を発行する必要があります。

ロールのリストで、先ほど作成したECS-OSS-Reader-Roleを見つけ、右側の「権限を追加」をクリックします。

許可範囲: 阿里雲アカウント全体を選択します (デフォルト)。

ポリシーの選択: OSSを読み取るだけの場合は、OSSを検索してチェックします。OSSを読み書きする必要がある場合: OSSを検索してチェックする。

「OK」をクリックしてください。

手順3: 役割をECSクラウドサーバにバインドする

このステップは非常に重要で、この「ライセンス」を特定のサーバの脳に貼り付けることに相当する。

クラウドサーバECSコンソールにアクセスして、コードを実行しているインスタンスを見つけます。

右側の「もっと」をクリックします。

ドロップダウンメニューで、作成したECS-OSS-Reader-Roleを選択します。

「OK」をクリックしてください。

第三段階: コード改造 -- ハードコードAKに完全に別れを告げる

今、あなたのサーバは合法的な身分を持っています。私たちはプロジェクトのコードを修正して、その数行をクソにしなければならない

Accessキーid

そして

Accessキーレット

完全に削除します。

阿里雲のSDKは

自動証憑ローテーション注入

機能。RAMロールがバインドされたECSでコードが実行されると、SDKはサーバ内の特別なローカルメタデータアドレスにアクセスします

http

: // 100.100.100.200/latest/meta-data/

全自動で一つを取得します

数時間ごとに自動的に期限切れになる一時Token

ハッカーがサーバーに潜入してこのTokenを盗んでも、数時間後には自動的に無効になり、永続的な裏口としては使えない。

Java SDKがOSSにアクセスする例:

古いコード (極度の危険❌):

Java

// このように書くのは厳禁です! コードに

公開コード管理プラットフォームに転送され、家族全員が瞬時に昇天した

String access keyid = "LTAI5tXXXXXX";

String accessKeySecret = "Pn7yXXXXXX";

OSS os sclient = newos sclientbuilder ().build(endpoint、access keyid、access keysecret);

新しいコード (クラウドネイティブセキュリティ戦略推奨):

Java

Import com.aliyun.oss.OSS;

Import com.aliyun.oss.OSSClientBuilder;

Import com.aliyun.credentials.Client;

Import com.Credentials.Mo dels.Config;

// 平文鍵は一切必要ありません。

Config credentialConfig = newconfig ();

CredentialConfig.setType("ecs_ram _ role"); // 指定された証明書タイプはECSにバインドされたRAMロールです

// 空白の場合、SDKは現在のサーバにバインドされているロール名を自動的に検索します

// CredentialConfig.setRoleName("ECS-OSS-Reader-Role");

Client credentialClient = new Client(credentialConfig);

// 臨時証明書を使用してOSSクライアントを構築する

OSS os sclient = new os sclientbuilder ().build(endpoint、credentialClient);

究極の防御線: 次の漏洩を防ぐにはどうすればいいですか?

絶対、絶対、絶対に公開コードベース (GitHub、Giteeなど) に平文AKを含む構成ファイルを提出しないでください。私有倉庫でもだめで、多くの漏洩は従業員が私有倉庫を誤って公開に変えたからだ。

.Gitignoreを上手に使う。プロジェクトの初期化時には、すぐにapplication-prod.yml、config.jsonなどの機密情報を含む構成ファイルを無視リストに追加します。

ローカル開発はどうしますか?ローカルコンピュータが確かにAKデバッグを必要としている場合は、あなたのコンピュータシステムの環境変数にakkを配置します (exたまらないa_cloud _ access _ key _ id = "xxx") コードの中で

System.getenv() で読み取ります。このようなコードはいつまでもきれいです。

安全で些細なことではない。今夜はあなたがメンテナンスしているプロジェクトを調べて、ハードコードされたメインアカウントAKをすべて殺しましょう!

cloud
← 返回新闻中心