Alibaba Cloud アカウントは、クラウドリソースにログインして管理するために使用される中心的な ID 認証情報です。認証情報が漏洩すると、高いセキュリティリスクが生じます。不正なアクセスや誤用を防ぐために、アカウントの認証情報を保護する必要があります。
セキュリティリスク
Alibaba Cloud アカウントに対する主なセキュリティ脅威には、パスワードへのブルートフォース攻撃や、AccessKey や RAM ロール用のセキュリティトークンサービス (STS) トークンなどの長期的な認証情報の漏洩が含まれます。攻撃者がこれらの認証情報を入手すると、正当なユーザーになりすましてログインし、リソースを管理したり、機密データにアクセスしたりする可能性があります。これにより、次のような深刻な結果につながる可能性があります。
リソースの不正使用。直接的な金銭的損失につながる可能性があります。
ビジネスの可用性に影響を与えるインフラストラクチャの損傷やサービスの中断。
機密データの漏洩や暗号化。情報漏洩やランサムウェアのリスクにつながる可能性があります。
悪意のあるプログラムやバックドアのインストール。システムのセキュリティとデータ整合性に対する長期的な脅威となります。
ベストプラクティス
アカウントパスワードを保護し、多要素認証 (MFA) を有効にする
複雑なパスワードの設定: 弱いパスワードは、アカウント侵害の主な原因です。ブルートフォース攻撃によるパスワードの推測や解読を防ぐために、弱いパスワードの使用は避けてください。
パスワードの定期的な変更: パスワードを 90 日ごとに変更して、長期間の使用による漏洩のリスクを軽減します。
MFA の有効化: Alibaba Cloud アカウントに仮想 MFA デバイスをアタッチまたはデタッチします。MFA は、モバイルトークンやハードウェアで保護されたキーなどの動的な検証コードを、パスワード認証に加えてセキュリティの追加レイヤーとして追加します。これにより、パスワードが漏洩した場合の不正アクセスを防ぐことができます。
AccessKey の代わりに ECS RAM ロールを使用する
ECS インスタンスにデプロイされたアプリケーションが、ECS スケーリングなどのために Alibaba Cloud サービス API を呼び出す必要がある場合は、AccessKey の代わりに RAM ロールを使用します。
RAM ユーザーを作成してロールをアタッチする
現在のアカウントには、インスタンスにロールをアタッチするための sts:AssumeRole 権限が必要です。この要件は、権限の乱用を防ぐのに役立ちます。
コンソール
ECS インスタンスに RAM ロールをアタッチします。
インスタンス作成時にロールをアタッチする
インスタンス購入ページでインスタンスを作成する際に、[詳細オプション] セクションで [インスタンス RAM ロール] を選択します。
インスタンスの脆弱性や構成エラーによって引き起こされる可能性のあるセキュリティトークンサービスのトークン漏洩を防ぐために、[メタデータアクセスモード] には [強制モード] を選択することをお勧めします。詳細については、「強制モードを使用してインスタンスメタデータにアクセスする」をご参照ください。
既存のインスタンスにロールをアタッチする
ECS コンソール - インスタンス ページに移動し、目的のターゲットリージョンに切り替えます。
ターゲットの ECS インスタンスを見つけ、インスタンス ID をクリックしてインスタンス詳細ページに移動します。
[その他の情報] セクションで、[RAM ロールの付与/取り消し] をクリックします。
表示されるダイアログボックスで、RAM ロールを選択し、[OK] をクリックします。
重要1 つの ECS インスタンスには 1 つの RAM ロールしかアタッチできません。アプリケーションが複数の権限を必要とする場合は、それらすべてをその単一のロールに付与する必要があります。
たとえば、インスタンスがすでに
AliyunECSDiskEncryptDefaultRoleロールにアタッチされており、ネットワークインターフェース管理権限も必要な場合は、RAM コンソールでそのロールにAliyunECSNetworkInterfaceManagementAccessポリシーを追加できます。
API
API 操作を使用して、ロールをアタッチおよびデタッチできます。
インスタンス作成時にロールをアタッチする: RunInstances または CreateInstance を呼び出してインスタンスを作成する際に、
RamRoleNameパラメーターを指定します。既存のインスタンスにロールをアタッチする: AttachInstanceRamRole を呼び出して、インスタンスに RAM ロールを付与します。
ロールをデタッチする: DetachInstanceRamRole を呼び出して、インスタンスに付与された RAM ロールを取り消します。
アプリケーションから RAM ロールを使用して Alibaba Cloud サービスにアクセスする
ECS インスタンスで実行されるアプリケーションは、インスタンスメタデータサービスから一時的な STS トークンを自動的に取得できます。その後、アプリケーションはこのトークンを使用して Alibaba Cloud サービス API を呼び出すことができます。
AccessKey を保護し、漏洩リスクを軽減する
AccessKey を使用する必要がある場合は、作成、ストレージ、配布、使用に至るまでのライフサイクル全体でセキュリティ管理を強化する必要があります。
作成: 「1 人に 1 つの AccessKey、1 つのアプリケーションに 1 つの AccessKey」の原則に従います。複数のユーザーやプログラム間で AccessKey を共有しないでください。AccessKey が漏洩した場合、この方法により、責任者を迅速に特定し、影響を限定し、キーを速やかにローテーションできます。
権限管理: 最小権限の原則に従い、必要な権限のみを付与します。RAM ユーザーを使用し、その責任に基づいて権限を割り当てます。Alibaba Cloud アカウントの AccessKey の使用は避けてください。詳細については、「Alibaba Cloud アカウントの使用を避け、異なる責任を持つ RAM ユーザーに異なる権限を付与する」をご参照ください。
安全なストレージ: AccessKey を信頼できるデバイスに保存します。例は次のとおりです。
ルートユーザーまたは特定のユーザーのみが読み取り可能なファイル。
アクセス制御を備えたデータベースまたは Key Management Service (KMS)。
ローカルのメモ、クラウドのメモ、コードリポジトリ、チャットの記録、個人の署名やステータスに AccessKey を保存しないでください。
安全な配布: AccessKey を暗号化されたファイルで配布します。暗号化された AccessKey ファイルをメールなどの 1 つのチャネルで送信し、復号パスワードをショートメッセージなどの別のチャネルで送信します。
安全な使用: コードに AccessKey をハードコーディングしないでください。代わりに、AccessKey を別の構成ファイルに保存し、ファイルを暗号化して、信頼できるサーバーに保存します。サーバーに配布された後にのみファイルを復号し、オーナーのみが読み取れるようにファイル権限を設定します。
ネットワークアクセス制御: RAM コンソールで AccessKey のネットワークアクセス制御ポリシーを構成します。詳細については、「AccessKey のネットワークアクセス制御ポリシー」をご参照ください。
定期的なローテーションとクリーンアップ
定期的なローテーション: AccessKey を 90 日ごとにローテーションします。新しい AccessKey を生成し、ユーザーに新しいキーに更新するよう通知します。詳細については、「RAM ユーザーの AccessKey をローテーションする」をご参照ください。
定期的なクリーンアップ: RAM コンソールで AccessKey の操作レコードを確認し、長期間使用されていないキーは速やかに取り消します。詳細については、「RAM ユーザーの AccessKey を削除する」をご参照ください。
AccessKey 漏洩リスクの監視: Security Center の AccessKey 漏洩検出機能を使用して、AccessKey が漏洩したかどうかを特定します。この機能は、漏洩した AccessKey のアラート通知をサポートしています。さらに、AccessKey が漏洩した場合、Alibaba Cloud はリスクのエスカレーションを防ぐためにAccessKey の制限的保護を提供します。
コンプライアンス機能
チェック: ECS インスタンスが AccessKey を使用して Alibaba Cloud サービスにアクセスしているかどうかを判断する
AccessKey ログをクエリして、AccessKey の基本情報、アクセスした Alibaba Cloud サービス、および関連する IP アドレスとリソースを検索できます。
前提条件: ActionTrail トレイルを作成し、Simple Log Service (SLS) Logstore にログを配信していること。
VPC エンドポイントから開始された AccessKey 呼び出しのクエリ:
* | SELECT "event.eventid","event.sourceipaddress", "event.userIdentity.accessKeyId", "event.vpcId" WHERE "event.userIdentity.accessKeyId" LIKE 'LTA%' and "event.vpcId" LIKE 'vpc%'結果は次の例のようになります。

vpcIdとsourceipaddressを使用して、呼び出しを開始した ECS インスタンスを特定します。次に、どのプログラムがaccessKeyIdを使用して OpenAPI を呼び出しているかを調査します。インターネットエンドポイントから開始された AccessKey 呼び出しのクエリ:
* | SELECT "event.eventid","event.sourceipaddress", "event.userIdentity.accessKeyId" WHERE "event.userIdentity.accessKeyId" LIKE 'LTA%' and "event.vpcId" IS NULL結果は次の例のようになります。

sourceipaddressが ECS インスタンスのパブリック IP アドレスであるかどうかを判断します。まず、アカウントの Elastic IP アドレス (EIP) とパブリック IP アドレスを取得します。次に、結果のsourceipaddressがお客様のものであるかどうかを確認します。EIP またはパブリック IP アドレスが ECS インスタンスに直接アタッチされている場合は、特定のインスタンスを特定してその構成を変更できます。
修復: AccessKey をインスタンス RAM ロールに置き換える
この問題を修正するには、「AccessKey の代わりに ECS RAM ロールを使用する」をご参照ください。詳細については、「AccessKey 漏洩の解決策」をご参照ください。