PHP 用 Tablestore SDK を使用してリクエストを開始するには、アクセス資格情報を構成する必要があります。Alibaba Cloud サービスは、アクセス資格情報を使用して ID 情報とアクセス権限を確認します。認証と承認の要件に基づいて、さまざまな種類のアクセス資格情報を選択できます。
前提条件
Tablestore SDK for PHP がインストールされていること。詳細については、「PHP 用 Tablestore SDK をインストールする」をご参照ください。
アクセス資格情報
アクセス資格情報の種類
一時的なアクセス資格情報: セキュリティの高いシナリオでは、一時的なアクセス資格情報を使用することをお勧めします。一時的なアクセス資格情報は、特定の期間内のみ有効であるため、資格情報の漏洩を防ぐのに役立ちます。一時的なアクセス資格情報は、きめ細かいアクセスコントロールをサポートしており、過剰な権限によるセキュリティリスクを防ぎます。
長期アクセス資格情報: セキュリティを確保するために、長期アクセス資格情報を使用しないことをお勧めします。利便性が不可欠なシナリオでは、長期アクセス資格情報を使用することで、長期間にわたる複数回の更新が不要になります。
重要アカウントのセキュリティを確保するために、長期アクセス資格情報を 3 か月ごとに変更することをお勧めします。
長期アクセス資格情報が漏洩した場合、または使用されなくなった場合は、セキュリティリスクを軽減するために、できるだけ早く長期アクセス資格情報を削除または無効にする必要があります。
一時的なアクセス資格情報の構成
SDK for PHP を使用して一時的に Tablestore にアクセスする場合は、セキュリティトークンサービス (STS) を使用して一時的なアクセス資格情報を生成できます。一時的なアクセス資格情報を使用する場合、Resource Access Management (RAM) ユーザーの AccessKey ペアを開示する必要はありません。これにより、Tablestore への安全なアクセスが保証されます。
RAM ユーザーを作成します。詳細については、「STS から取得した一時的なアクセス資格情報を使用してリクエストを開始する」トピックの 手順 1: RAM ユーザーを作成する セクションをご参照ください。
AliyunSTSAssumeRoleAccess
ポリシーを RAM ユーザーにアタッチします。詳細については、「STS から取得した一時的なアクセス資格情報を使用してリクエストを開始する」トピックの 手順 2: RAM ユーザーに AssumeRole オペレーションを呼び出す権限を付与する セクションをご参照ください。RAM ロールを作成し、カスタムポリシーを RAM ロールにアタッチします。詳細については、「STS から取得した一時的なアクセス資格情報を使用してリクエストを開始する」トピックの 手順 3: RAM ロールを作成する セクションと 手順 4: RAM ロールに Tablestore の読み取り専用アクセス権を付与する セクションをご参照ください。
RAM ユーザーとして RAM ロールを引き受けて、STS から一時的なアクセス資格情報を取得します。詳細については、「STS から取得した一時的なアクセス資格情報を使用してリクエストを開始する」トピックの 手順 5: RAM ユーザーを使用して RAM ロールを引き受けて一時的なアクセス資格情報を取得する セクションをご参照ください。
STS から取得した一時的なアクセス資格情報を構成します。
環境変数
一時的なアクセス資格情報を使用して環境変数を指定します。
Mac OS X/Linux/UNIX
# STS から取得した一時的な AccessKey ID を指定します。 export TABLESTORE_ACCESS_KEY_ID=your_sts_access_key_id # STS から取得した一時的な AccessKey シークレットを指定します。 export TABLESTORE_ACCESS_KEY_SECRET=your_sts_access_key_secret # STS から取得したセキュリティトークンを指定します。 export TABLESTORE_SESSION_TOKEN=your_sts_token
Windows
管理者として [コマンドプロンプト] を実行し、次のコマンドを実行します。
# STS から取得した一時的な AccessKey ID を指定します。 setx TABLESTORE_ACCESS_KEY_ID your_sts_access_key_id /m # STS から取得した一時的な AccessKey シークレットを指定します。 setx TABLESTORE_ACCESS_KEY_SECRET your_sts_access_key_secret /m # STS から取得したセキュリティトークンを指定します。 setx TABLESTORE_SESSION_TOKEN your_sts_token /m
説明環境変数を指定した後、新しい設定が想定どおりに適用されるように、統合開発環境 (IDE) などの関連サービスまたは開発ツールを再起動する必要がある場合があります。
環境変数を使用して資格情報を渡します。
$accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID'); $accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET'); $securityToken = getenv('TABLESTORE_SESSION_TOKEN');
静的資格情報
コード内で変数を指定することで、資格情報を参照できます。ランタイム環境では、変数は環境変数、構成ファイル、またはその他の外部データソースからの実際の資格情報値によって渡されます。
次の手順では、構成ファイルを使用して資格情報を渡す方法について説明します。
config.ini
という名前の構成ファイルを作成します。[configName] TABLESTORE_ACCESS_KEY_ID = your_sts_access_key_id TABLESTORE_ACCESS_KEY_SECRET = your_sts_access_key_secret TABLESTORE_SESSION_TOKEN = your_sts_token
構成ファイルを使用して資格情報を渡します。
try { // 構成ファイルを読み取ります。この例では、構成ファイルはスクリプトと同じディレクトリに保存されています。 $config = parse_ini_file('config.ini'); // STS から AccessKey ペアとセキュリティトークンを取得します。 $accessKeyId = $config['TABLESTORE_ACCESS_KEY_ID']; $accessKeySecret = $config['TABLESTORE_ACCESS_KEY_SECRET']; $securityToken = $config['TABLESTORE_SESSION_TOKEN']; }catch (Exception $e) { printf($e->getMessage() . "\n"); return; }
長期アクセス資格情報の構成
アプリケーションが外部攻撃を受けにくい安全で安定した環境にデプロイされており、PHP 用 Tablestore SDK を使用して Tablestore に長期間アクセスする必要がある場合は、Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアを使用できます。詳細については、「RAM ユーザーの AccessKey ペアを使用して Tablestore にアクセスする」をご参照ください。
Alibaba Cloud アカウントは、アカウント内のリソースに対するすべての権限を持っています。Alibaba Cloud アカウントの AccessKey ペアの漏洩は、システムにとって重大な脅威となります。したがって、最小権限の原則に基づいて権限が付与されている RAM ユーザーの AccessKey ペアを使用することをお勧めします。
環境変数
AccessKey ペアを使用して環境変数を指定します。
Mac OS X/Linux/UNIX
# AccessKey ID を指定します。 export TABLESTORE_ACCESS_KEY_ID=your_access_key_id # AccessKey シークレットを指定します。 export TABLESTORE_ACCESS_KEY_SECRET=your_access_key_secret
Windows
管理者として [コマンドプロンプト] を実行し、次のコマンドを実行します。
# AccessKey ID を指定します。 setx TABLESTORE_ACCESS_KEY_ID your_access_key_id /m # AccessKey シークレットを指定します。 setx TABLESTORE_ACCESS_KEY_SECRET your_access_key_secret /m
説明環境変数を指定した後、新しい設定が想定どおりに適用されるように、IDE などの関連サービスまたは開発ツールを再起動する必要がある場合があります。
環境変数を使用して資格情報を渡します。
$accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID'); $accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET');
静的資格情報
コード内で変数を指定することで、資格情報を参照できます。ランタイム環境では、変数は環境変数、構成ファイル、またはその他の外部データソースからの実際の資格情報値によって渡されます。
次の手順では、構成ファイルを使用して資格情報を渡す方法について説明します。
config.ini
という名前の構成ファイルを作成します。[configName] TABLESTORE_ACCESS_KEY_ID = your_access_key_id TABLESTORE_ACCESS_KEY_SECRET = your_access_key_secret
構成ファイルを使用して資格情報を渡します。
try { // 構成ファイルを読み取ります。この例では、構成ファイルはスクリプトと同じディレクトリに保存されています。 $config = parse_ini_file('config.ini'); // AccessKey ID と AccessKey シークレットを取得します。 $accessKeyId = $config['TABLESTORE_ACCESS_KEY_ID']; $accessKeySecret = $config['TABLESTORE_ACCESS_KEY_SECRET']; }catch (Exception $e) { printf($e->getMessage() . "\n"); return; }
次の手順
資格情報プロバイダーを初期化したら、資格情報プロバイダーを使用して OTSClient インスタンスを作成する必要があります。詳細については、「Tablestore クライアントを初期化する」をご参照ください。