システムポリシーが要件を満たしていない場合は、最小権限の原則を実装するためにカスタムポリシーを設定できます。カスタムポリシーを使用すると、権限をきめ細かく制御し、リソースアクセスセキュリティを向上させることができます。このトピックでは、Tablestoreでカスタムポリシーが使用されるシナリオについて説明し、カスタムポリシーのサンプルを提供します。
Resource Access Management(RAM)ポリシーは、システムポリシーとカスタムポリシーに分類されます。カスタムポリシーの作成、更新、削除ができます。カスタムポリシーのバージョン更新を管理する必要があります。
カスタムポリシーを作成した後、ポリシーをRAMユーザー、RAMユーザーグループ、またはRAMロールにアタッチする必要があります。これにより、ポリシーで指定された権限をプリンシパルに付与できます。
プリンシパルにアタッチされていないRAMポリシーは直接削除できます。RAMポリシーがプリンシパルにアタッチされている場合は、RAMポリシーを削除する前に、プリンシパルからRAMポリシーをデタッチする必要があります。
カスタムポリシーはバージョン管理をサポートしています。RAMが提供するバージョン管理メカニズムに基づいて、カスタムポリシーのバージョンを管理できます。
参考資料
カスタムポリシーの一般的なシナリオと例
一般的なシナリオでカスタムポリシーを設定する方法については、カスタムポリシーの設定を参照してください。
Condition要素を使用して、特定の条件を指定してユーザーアクセスを許可または拒否するポリシーを設定できます。 Tablestoreのポリシーは、IPアドレスベースのアクセス制御、HTTPSベースのアクセス制御、多要素認証(MFA)ベースのアクセス制御、TLSバージョンベースのアクセス制御、および時間ベースのアクセス制御をサポートしています。
IPアドレスベースのアクセス制御
IP アドレスのホワイトリストを作成して、Tablestore リソースへのアクセスを許可する IP アドレスまたは CIDR ブロックを指定できます。IP アドレスベースのアクセス制御は、以下のシナリオに適しています。
複数のIPアドレスからのアクセスを許可する
次のサンプルコードは、IPアドレス10.10.XX.XXおよび10.11.XX.XXからのみTablestoreリソースへのアクセス要求を許可する方法の例を示しています。
{ "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": "acs:ots:*:*:*", "Condition": { "IpAddress": { "acs:SourceIp": [ "10.10.XX.XX", "10.11.XX.XX" ] } } } ], "Version": "1" }
1つのIPアドレスまたはCIDRブロックからのみアクセスを許可する
次のサンプルコードは、IPアドレス10.10.XX.XXまたはCIDRブロック10.10.XX.XX/24からのみTablestoreリソースへのアクセス要求を許可する方法の例を示しています。
{ "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": "acs:ots:*:*:*", "Condition": { "IpAddress": { "acs:SourceIp": [ "10.10.XX.XX", "10.10.XX.XX/24" ] } } } ], "Version": "1" }
HTTPSベースのアクセス制御
HTTPS 経由で送信されたリクエストのみが Tablestore リソースにアクセスできるように、カスタムポリシーを作成できます。
次のサンプルコードは、HTTPS 経由で送信されたリクエストのみがTablestoreリソースにアクセスできるようにする方法の例を示しています。
{
"Statement": [
{
"Effect": "Allow",
"Action": "ots:*",
"Resource": "acs:ots:*:*:*",
"Condition": {
"Bool": {
"acs:SecureTransport": "true"
}
}
}
],
"Version": "1"
}
TLSバージョンベースのアクセス制御
TLS V1.2またはTLS V1.3経由で送信されたリクエストのみがTablestoreリソースにアクセスできるようにカスタムポリシーを作成できます。
次のサンプルコードは、TLS V1.2またはTLS V1.3経由で送信されたリクエストのみがTablestoreリソースにアクセスできるようにする方法の例を示しています。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ots:*",
],
"Resource": [
"*"
],
"Condition": {
"StringNotEquals": {
"ots:TLSVersion": [
"TLSv1.2",
"TLSv1.3"
]
}
}
}
]
}
MFAベースのアクセス制御
MFA をパスしたリクエストのみが Tablestore リソースにアクセスできるように、カスタムポリシーを作成できます。
次のサンプルコードは、MFA を通過したリクエストのみがTablestoreリソースにアクセスできるようにする方法の例を示しています。
{
"Statement": [
{
"Effect": "Allow",
"Action": "ots:*",
"Resource": "acs:ots:*:*:*",
"Condition": {
"Bool": {
"acs:MFAPresent ": "true"
}
}
}
],
"Version": "1"
}
時間ベースのアクセス制御
リクエストのアクセス時間を指定するカスタムポリシーを作成できます。指定された時点より前に送信されたアクセスリクエストは許可または拒否されます。
次のサンプルコードは、2016年1月1日午前0時(UTC+8)より前にのみユーザーがTablestoreリソースにアクセスできるようにする方法の例を示しています。
{
"Statement": [
{
"Effect": "Allow",
"Action": "ots:*",
"Resource": "acs:ots:*:*:*",
"Condition": {
"DateLessThan": {
"acs:CurrentTime": "2016-01-01T00:00:00+08:00"
}
}
}
],
"Version": "1"
}