Storage GatewayみたいにSMBやNFSでS3上のデータを操作したい
こんにちは、のんピ(@non____97)です。
皆さんはStorage GatewayみたいにSMBやNFSでS3上のデータを操作したいしたいなと思ったことはありますか? 私はあります。
その願いはONTAP S3のマルチプロトコルアクセス(Data Duality)で少しだけ叶えることができます。
こちらはONTAP 9.12.1から追加された機能で、Amazon FSx for NetApp ONTAP(以降FSxN)上でS3に対応したマルチプロトコルでアクセス可能なボリュームを作成が可能となります。
ざっくりとした概要は以下記事でも紹介しているので、ご覧ください。
この記事ではONTAP S3とONTAP S3のData Dualityについて、もう少し深掘りします。
いきなりまとめ
- ONTAP S3はONTAP上で動作するAmazon S3互換のオブジェクトストレージ
- 通常のS3バケットと異なり、アクセス時にエンドポイントURLを指定する必要がある
- サポートされているS3のAPIや連携可能なONTAPの機能は事前に確認しておこう
- NFSやSMBでアクセス可能なボリュームに対して、S3でのアクセスも可能
- NFS/SMB/S3と異なるプロトコルでアクセスが必要なデータを、それぞれのプロトコルにコピーするという手間がなくなる
- マルチプロトコルを有効化しているONTAP S3のS3バケットにS3のAPIでアクセスする際はネームマッピングが必要
ONTAP S3とは
概要
ONTAP S3とは「ONTAP上で動作するAmazon S3互換のオブジェクトストレージ」のことです。
以下スライドのように、FSxNが既存のS3バケットと連携するのではなく、FSxN上でS3互換のオブジェクトストレージが動作します。
ONTAP S3のバケットの実態はFlexGroupです。FlexGroupの詳細は以下記事をご覧ください。
アクセス方法
通常、ONTAP S3のS3バケットを含むFlexGroupボリュームへのNFSやSMBを使ったアクセスは許可されていません。
アクセスする際はS3のAPIを使用します。その時はONTAP S3上で発行されたユーザーのアクセスキーとシークレットアクセスキーを使用します。
また、アクセスする際はエンドポイントURLとして、FSxNのSVMの管理エンドポイントを指定する必要があります。
そのため、AWSのマネージドサービスとの連携は少し不得手です。ALBのアクセスログをFSxN上のS3バケットに指定するといったことはできません。
ONTAP S3でサポートしているS3のAPI
ONTAP S3はS3互換のストレージであるため、多くのS3 REST APIをサポートしています。
以下NetApp公式ドキュメントにONTAP S3でサポートしているS3のAPIが記載されているので、チェックしてみてください。
ONTAP S3がサポートしているONTAPの機能
ONTAP S3でStorage Efficiencyを効かせたり、QoSを設定することは可能です。
ただし、Snapshotの取得やFlexCloneの作成などはできません。
どの機能がサポートされていて、どの機能がサポートされていないかは以下NetApp公式ドキュメントに記載があります。
ONTAP S3の設定フロー
FSxNにおいて、ONTAP S3を設定する際のフローは以下の通りです。
- object-store-server の作成
- ONTAP S3のユーザーの作成
- ONTAP S3のグループの作成と権限の割り当て
- ONTAP S3のバケットの作成
実際の作成手順は以下NetApp公式ドキュメントをご覧ください。
ONTAP S3のData Dualityとは
概要
ONTAP S3のData Dualityとは、NFSやSMBでアクセス可能なボリュームに対して、S3でのアクセスも可能とする機能です。
この機能によって、NFS/SMB/S3と異なるプロトコルでアクセスが必要なデータを、それぞれのプロトコルにコピーするという手間がなくなります。
ユースケースとして「NFSクライアントから収集したデータをS3を中心としたデータ分析基盤と連携する」などが挙げられます。NetApp公式ドキュメントではAWS SageMakerとの連携が紹介されていました。
また、S3 APIのみの場合はオブジェクトの一部を編集する場合は「オブジェクトのダウンロード」→「編集」→「アップロード」のステップが必要でしたが、NFSやSMBを使えば直接編集が可能になります。
ONTAP S3のData Dualityのポイントは「既存のONTAP S3バケットに対してNFSやSMBによるアクセスを追加する」のではなく、「既存のNFSやSMBボリュームに対してONTAP S3のバケットをマッピングする」ところです。主体はNFSやSMBのボリュームとなります。
アクセス方法
マルチプロトコルを有効化しているONTAP S3のS3バケットにS3のAPIでアクセスする際は、NFSとSMBのマルチプロトコルアクセスを実現するときと同様にネームマッピングが必要となります。S3からNFS、S3からSMBどちらのプロトコルへのネームマッピングも可能です。
ネームマッピングの詳細は以下記事とNetAppのKBをご覧ください。
制約事項と通常のONTAP S3との違い
NFSやSMBのボリュームに対してS3アクセスを許可している形であるため、通常のONTAP S3と制約事項が異なります。
例えば、以下のようなものが挙げられます。
- Snapshotの取得および、SnapMirrorによるデータ転送が可能
- S3のアクセス監査は行うことができない
- プレフィックスが
x-amz-meta
のリクエストヘッダーは無視される - PUT ObjectとMultipart Initiateでプレフィックスが
x-amz-tagging
のヘッダーは無視される - 既存のファイルでタグを更新するリクエストは拒否される
- バージョン管理をバケットのマッピング設定で指定することはできない
- マルチパート関連の処理はサポートされていない
- S3の名前は1024 Byteに制限されているため、長いパス名を持つファイルにS3 APIを使用してアクセスすることはできない
- ファイル名とディレクトリ名は255文字に制限されているため、オブジェクト名として連続する255文字以外の文字(
/
)を使用できない - バックスラッシュで区切られたSMBパス名は、S3上ではスラッシュではなく、オブジェクト名として認識される
- 有効なS3オブジェクト名のペアの一部は、マッピングされたNASディレクトリツリーに共存できない
ONTAP S3のData Duality設定フロー
FSxNにおいて、ONTAP S3のData Dualityを設定する際のフローは以下の通りです。
- ボリュームの作成
- NFS or SMBのサーバー起動 & ファイル共有の作成
- object-store-server の作成
- ONTAP S3のユーザーの作成
- ONTAP S3のグループの作成と権限の割り当て
- ONTAP S3のユーザーとNFS or SMBユーザーのネームマッピング
- ONTAP S3のバケットの作成
実際の作成手順は以下NetApp公式ドキュメントをご覧ください。
通常のONTAP S3のS3バケットを作成してみる
証明書の発行
ONTAP S3のS3バケットにHTTPSで通信してみたかったので証明書を用意します。
ONTAP上で認証局を立てることができるので自己署名証明書を作成します。
FSxN上でデフォルトでインストールされている証明書は以下のとおりです。
::> security certificate show
Vserver Serial Number Certificate Name Type
---------- --------------- -------------------------------------- ------------
FsxId03e6b8146fca5e858
3F864DC175CE5787F29AF1517E121B21
clientCa1 client-ca
Certificate Authority: Amazon FSx Root CA 1 for us-east-1
Expiration Date: Wed Aug 08 21:15:27 3021
FsxId03e6b8146fca5e858
3F864DC175CE5787F29AF1517E121B21
serverCa1 server-ca
Certificate Authority: Amazon FSx Root CA 1 for us-east-1
Expiration Date: Wed Aug 08 21:15:27 3021
FsxId03e6b8146fca5e858
FC86BD1526879B4A02CA2CFD832BB379
clientCa0 client-ca
Certificate Authority: Amazon FSx Root CA 1 for us-east-1
Expiration Date: Sun Aug 21 14:19:16 2033
FsxId03e6b8146fca5e858
FC86BD1526879B4A02CA2CFD832BB379
serverCa0 server-ca
Certificate Authority: Amazon FSx Root CA 1 for us-east-1
Expiration Date: Sun Aug 21 14:19:16 2033
svm 1790EA6BFE4A853C
svm_1790EA6BFE4A853C server
Certificate Authority: svm
Expiration Date: Wed Oct 23 02:33:29 2024
5 entries were displayed.
まず、CAを作成します。
CAを作成する際はsecurity certificate createの-type
でroot-ca
を指定します。
# CAの作成
::> security certificate create -vserver svm -type root-ca -common-name svm_ca
The certificate's generated name for reference: svm_ca_1794ADFCA608B978_svm_ca
# 作成した証明書の確認
::> security certificate show -common-name svm_ca
Vserver Serial Number Certificate Name Type
---------- --------------- -------------------------------------- ------------
svm 1794ADFCA608B978
svm_ca_1794ADFCA608B978_svm_ca root-ca
Certificate Authority: svm_ca
Expiration Date: Mon Nov 04 08:51:00 2024
svm 1794ADFCA608B978
svm_ca_1794ADFCA608B978 client-ca
Certificate Authority: svm_ca
Expiration Date: Mon Nov 04 08:51:00 2024
svm 1794ADFCA608B978
svm_ca server-ca
Certificate Authority: svm_ca
Expiration Date: Mon Nov 04 08:51:00 2024
3 entries were displayed.
# 作成した証明書の詳細の確認
::> security certificate show -common-name svm_ca -instance
Vserver: svm
Certificate Name: svm_ca_1794ADFCA608B978_svm_ca
FQDN or Custom Common Name: svm_ca
Serial Number of Certificate: 1794ADFCA608B978
Certificate Authority: svm_ca
Type of Certificate: root-ca
Size of Requested Certificate(bits): 2048
Certificate Start Date: Sun Nov 05 08:51:00 2023
Certificate Expiration Date: Mon Nov 04 08:51:00 2024
Public Key Certificate: -----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
-----END CERTIFICATE-----
Country Name (2 letter code): US
State or Province Name (full name):
Locality Name (e.g. city):
Organization Name (e.g. company):
Organization Unit (e.g. section):
Email Address (Contact Name):
Protocol: SSL
Hashing Function: SHA256
Subtype: -
Vserver: svm
Certificate Name: svm_ca_1794ADFCA608B978
FQDN or Custom Common Name: svm_ca
Serial Number of Certificate: 1794ADFCA608B978
Certificate Authority: svm_ca
Type of Certificate: client-ca
Size of Requested Certificate(bits): 2048
Certificate Start Date: Sun Nov 05 08:51:00 2023
Certificate Expiration Date: Mon Nov 04 08:51:00 2024
Public Key Certificate: -----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
-----END CERTIFICATE-----
Country Name (2 letter code): US
State or Province Name (full name):
Locality Name (e.g. city):
Organization Name (e.g. company):
Organization Unit (e.g. section):
Email Address (Contact Name):
Protocol: SSL
Hashing Function: SHA256
Subtype: -
Vserver: svm
Certificate Name: svm_ca
FQDN or Custom Common Name: svm_ca
Serial Number of Certificate: 1794ADFCA608B978
Certificate Authority: svm_ca
Type of Certificate: server-ca
Size of Requested Certificate(bits): 2048
Certificate Start Date: Sun Nov 05 08:51:00 2023
Certificate Expiration Date: Mon Nov 04 08:51:00 2024
Public Key Certificate: -----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
-----END CERTIFICATE-----
Country Name (2 letter code): US
State or Province Name (full name):
Locality Name (e.g. city):
Organization Name (e.g. company):
Organization Unit (e.g. section):
Email Address (Contact Name):
Protocol: SSL
Hashing Function: SHA256
Subtype: -
3 entries were displayed.
CAの秘密鍵のパスフレーズなどは要求されませんでした。
続いて、ONTAP S3で使用する証明書用のCSRをsecurity certificate generate-csrで作成します。
CNとSANはSVMの管理エンドポイント名とします。これはONTAP S3をサポートしているLIFがnfs_smb_management_1
というLIFでサポートしているためです。
::> network interface show -services data-s3-server -fields services, data-protocol
vserver lif services data-protocol
------- -------------------- ------------------------------------------------------------------------------------------- -------------
svm nfs_smb_management_1 data-core,data-nfs,data-cifs,management-ssh,management-https,data-s3-server,data-dns-server nfs,cifs,s3
CSRを作成すると秘密鍵も生成されます。
# CSRの作成
::> security certificate generate-csr -common-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -dns-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
Certificate Signing Request :
-----BEGIN CERTIFICATE REQUEST-----
MIIDMDCCAhgCAQAwUTFPME0GA1UEAxNGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZz
LTAzZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaEP6X54++epdzBhgMZBZhp
oXzJ6W+E/Ed85EbF5kljPxTUZs5nt1nkzj6X8tWcIE1hxV+bY3emu4YA4Fuxb1lQ
DR1wmNDzNlOI2zhoUjqRPULFLkAasnMOVlxTHp8shGYmrAp/nWBgdjB0S6YYBfWr
95Ci+5PvFWEn8HUJrKdKXc+vcKCjgVW9LdYa3e8tWzgXT3c4zae0i03DK5rBIdLN
zTS+ZlqZX7/Q+JvVL0O02/86h6w6A4daLmOtnoal5NdxiH9MkybGqy6Y5dYYizCU
JGkLBrdBTzCDn8cfnDw2JjIC1XAcCrxwaX/49oSm/31Ts7jmoj+iyrUoRdEZv1cC
AwEAAaCBmTCBlgYJKoZIhvcNAQkOMYGIMIGFMFQGA1UdEQEB/wRKMEiCRnN2bS0w
MDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFz
dC0xLmFtYXpvbmF3cy5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG
AQUFBwMCBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAQYiBzhZkymCjVLkN
n/0f/lopmQFsxHPYHxDZhPg93dKRkDxOSe+oJ0NFI85zaLxRyXNYRxNsiAK5nbBd
d5kyINJ9KqDbgggiGTnEIpJJR7sFWMxu37689wIGOFZu1Qaqj203K7wD6JxddnXG
Z4dOFibhzU2zOfXj1T53vc0ysT9vNLi8JVeKvXPmQtZilWkBTgMCFacmz/4l1IiS
G6f30VNVNmuH7j2g8TwZrw0USnMzZ2mwIDdFGewY/vV2bB2ba67RT6/a1qF3StBy
PF1XeNzSBSeL3gGg2kPaIXfY8+kZsEGkJ3lw4NNXOUEabQ08GXs4Y3at7yDHUY2i
KF2q5g==
-----END CERTIFICATE REQUEST-----
Private Key :
-----BEGIN PRIVATE KEY-----
.
.
(中略)
.
.
-----END PRIVATE KEY-----
Note: Please keep a copy of your certificate request and private key for future reference.
security certificate signでCSRに署名して証明書を発行します。署名する際には署名するCAとCSRを入力します。
::> security certificate sign -vserver svm -ca svm_ca -ca-serial 1794ADFCA608B978 -expire-days 3 -format PEM -hash-function SHA256
Please enter Certificate Signing Request(CSR): Press <Enter> when done
-----BEGIN CERTIFICATE REQUEST-----
MIIDMDCCAhgCAQAwUTFPME0GA1UEAxNGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZz
LTAzZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaEP6X54++epdzBhgMZBZhp
oXzJ6W+E/Ed85EbF5kljPxTUZs5nt1nkzj6X8tWcIE1hxV+bY3emu4YA4Fuxb1lQ
DR1wmNDzNlOI2zhoUjqRPULFLkAasnMOVlxTHp8shGYmrAp/nWBgdjB0S6YYBfWr
95Ci+5PvFWEn8HUJrKdKXc+vcKCjgVW9LdYa3e8tWzgXT3c4zae0i03DK5rBIdLN
zTS+ZlqZX7/Q+JvVL0O02/86h6w6A4daLmOtnoal5NdxiH9MkybGqy6Y5dYYizCU
JGkLBrdBTzCDn8cfnDw2JjIC1XAcCrxwaX/49oSm/31Ts7jmoj+iyrUoRdEZv1cC
AwEAAaCBmTCBlgYJKoZIhvcNAQkOMYGIMIGFMFQGA1UdEQEB/wRKMEiCRnN2bS0w
MDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFz
dC0xLmFtYXpvbmF3cy5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG
AQUFBwMCBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAQYiBzhZkymCjVLkN
n/0f/lopmQFsxHPYHxDZhPg93dKRkDxOSe+oJ0NFI85zaLxRyXNYRxNsiAK5nbBd
d5kyINJ9KqDbgggiGTnEIpJJR7sFWMxu37689wIGOFZu1Qaqj203K7wD6JxddnXG
Z4dOFibhzU2zOfXj1T53vc0ysT9vNLi8JVeKvXPmQtZilWkBTgMCFacmz/4l1IiS
G6f30VNVNmuH7j2g8TwZrw0USnMzZ2mwIDdFGewY/vV2bB2ba67RT6/a1qF3StBy
PF1XeNzSBSeL3gGg2kPaIXfY8+kZsEGkJ3lw4NNXOUEabQ08GXs4Y3at7yDHUY2i
KF2q5g==
-----END CERTIFICATE REQUEST-----
Signed Certificate :
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw
MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2
YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv
hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ
8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT
7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa
mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3
QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj
gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz
ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV
HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud
EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA
FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya
6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3
azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg
HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U
DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS
6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX
J0AEf4F1J9bv
-----END CERTIFICATE-----
発行した証明書をsecurity certificate installでSVMにインストールします。インストールする際はCSR作成時に出力された秘密鍵を入力します。
::> security certificate install -type server -vserver svm
Please enter Certificate: Press <Enter> when done
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw
MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2
YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv
hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ
8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT
7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa
mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3
QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj
gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz
ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV
HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud
EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA
FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya
6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3
azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg
HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U
DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS
6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX
J0AEf4F1J9bv
-----END CERTIFICATE-----
Please enter Private Key: Press <Enter> when done
-----BEGIN PRIVATE KEY-----
.
.
(中略)
.
.
-----END PRIVATE KEY-----
Enter certificates of certification authorities (CA) which form the certificate chain of the server certificate. This
starts with the issuing CA certificate of the server certificate and can range up to the root CA certificate.
Do you want to continue entering root and/or intermediate certificates {y|n}: n
You should keep a copy of the private key and the CA-signed digital certificate for future reference.
The installed certificate's CA and serial number for reference:
CA: svm_ca
serial: 1794E3AF283E4D9F
The certificate's generated name for reference: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
証明書がインストールされたことを確認します。
::> security certificate show -cert-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
Vserver Serial Number Certificate Name Type
---------- --------------- -------------------------------------- ------------
svm 1794E3AF283E4D9F
svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
server
Certificate Authority: svm_ca
Expiration Date: Thu Nov 09 01:15:00 2023
::> security certificate show -cert-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -instance
Vserver: svm
Certificate Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
FQDN or Custom Common Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
Serial Number of Certificate: 1794E3AF283E4D9F
Certificate Authority: svm_ca
Type of Certificate: server
Size of Requested Certificate(bits): 2048
Certificate Start Date: Mon Nov 06 01:15:00 2023
Certificate Expiration Date: Thu Nov 09 01:15:00 2023
Public Key Certificate: -----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw
MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2
YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv
hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ
8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT
7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa
mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3
QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj
gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz
ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV
HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud
EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA
FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya
6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3
azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg
HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U
DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS
6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX
J0AEf4F1J9bv
-----END CERTIFICATE-----
Country Name (2 letter code):
State or Province Name (full name):
Locality Name (e.g. city):
Organization Name (e.g. company):
Organization Unit (e.g. section):
Email Address (Contact Name):
Protocol: SSL
Hashing Function: SHA256
Subtype: -
object-store-server の作成
次に、object-store-server の作成をします。
object-store-server createでobject-store-server を作成します。
作成する際に事前に用意した証明書を指定します。
::> object-store-server create -object-store-server svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -is-http-enabled false -is-https-enabled true -certificate-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
(vserver object-store-server create)
::> object-store-server show
(vserver object-store-server show)
Vserver: svm
Object Store Server Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
Administrative State: up
HTTP Enabled: false
Listener Port For HTTP: 80
HTTPS Enabled: true
Secure Listener Port For HTTPS: 443
Certificate for HTTPS Connections: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
Default UNIX User: pcuser
Default Windows User: -
Comment:
ONTAP S3のユーザーの作成
ONTAP S3でアクセスする際に使用するユーザーをobject-store-server user createで作成します。
# ユーザーの作成
::> object-store-server user create -vserver svm -user s3-user
(vserver object-store-server user create)
# 作成したユーザーの確認
::> object-store-server user show -instance
(vserver object-store-server user show)
Vserver Name: svm
Object Store Server User Name: root
Object Store Server User ID: 0
Object Store Server User Description: Root User
Access Key for the Object Store Server User: -
Vserver Name: svm
Object Store Server User Name: s3-user
Object Store Server User ID: 2
Object Store Server User Description:
Access Key for the Object Store Server User: XEFD2323G5QAL53VC56C
2 entries were displayed.
# シークレットアクセスキーを表示するために advanced に権限レベルを変更
::> set advanced
Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp personnel.
Do you want to continue? {y|n}: y
# シークレットアクセスキーの確認
::*> object-store-server user show -instance
(vserver object-store-server user show)
Vserver Name: svm
Object Store Server User Name: root
Object Store Server User ID: 0
Object Store Server User Description: Root User
Access Key for the Object Store Server User: -
Secret Key for the Object Store Server User: -
Vserver Name: svm
Object Store Server User Name: s3-user
Object Store Server User ID: 2
Object Store Server User Description:
Access Key for the Object Store Server User: XEFD2323G5QAL53VC56C
Secret Key for the Object Store Server User: <省略>
2 entries were displayed.
# 権限レベルを元に戻す
::*> set admin
ONTAP S3のグループの作成と権限の割り当て
作成したユーザーにS3バケットへのアクセス権限を付与するために、object-store-server group createでグループを作成します。
# 存在するポリシーの確認
::> object-store-server policy show
(vserver object-store-server policy show)
Vserver Name Is Read-Only Comment
----------- ------------------ ------------ ----------------
svm FullAccess true Read Only Policy: To allow full access to S3 resources
svm NoS3Access true Read Only Policy: To deny access to all S3 resources
svm ReadOnlyAccess true Read Only Policy: To allow read-only access to S3 resources
3 entries were displayed.
# グループの作成
::> object-store-server group create -name s3-group-fullaccess -users s3-user -policies FullAccess
(vserver object-store-server group create)
# 作成したグループの確認
::> object-store-server group show
(vserver object-store-server group show)
Vserver Group ID Group Name Users Policies
----------- --------- -------------- ---------------- -------------------
svm 2 s3-group-fullaccess
s3-user FullAccess
::> object-store-server group show -instance
(vserver object-store-server group show)
Vserver Name :svm
Group ID :2
Group Name :s3-group-fullaccess
Users :s3-user
Policies :FullAccess
Comment :
グループにアタッチするポリシーは既に存在するFullAccess
を使用しましたが、object-store-server policy createとobject-store-server policy statement createを使ってポリシーを新規に作成することも可能です。
ポリシーstatementの作成例
::> vserver object-store-server policy statement create -vserver vs1 -policy Policy_1 -effect allow -actions GetObject,PutObject,DeleteObject,ListBucket,GetBucketAcl,GetObjectAcl,ListAllMyBuckets,GetBucketLocation -resource bucket1/* -sid "FullAccesToBucket1"
ONTAP S3のバケットの作成
ONTAP S3のバケットをobject-store-server bucket createで作成します。
::> object-store-server bucket create -vserver svm -bucket ontap-s3-bucket -type s3 -versioning-state enabled -comment ""
(vserver object-store-server bucket create)
[Job 224] Job succeeded: Successful
::> object-store-server bucket show -bucket ontap-s3-bucket
(vserver object-store-server bucket show)
Vserver Bucket Type Volume Size Encryption Role NAS Path
----------- --------------- -------- ----------------- ---------- ---------- ---------- ----------
svm ontap-s3-bucket s3 fg_oss_1699177255 800GB false standalone -
::> object-store-server bucket show -bucket ontap-s3-bucket -instance
(vserver object-store-server bucket show)
Vserver: svm
Bucket :ontap-s3-bucket
Type :s3
Versioning :enabled
Uuid :6eb04d3e-7bbf-11ee-9f74-d3a6f7a64800
Volume :fg_oss_1699177255
Size :800GB
Logical Used Size :0B
Object Count :0
Encryption :false
Comment :
Qos Policy Group :-
Role :standalone
Bucket Protected :false
Bucket Protected On ONTAP :false
Bucket Protected On Cloud :false
Bucket Protected on External Cloud :false
NAS Path :-
Object Lock retention mode :no-lock
S3バケットのボリュームはFlexGroupです。以下コマンドで確かにFlexGroupであることを確認しておきます。
::> vol show -volume fg_oss_1699177255* -is-constituent true
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm fg_oss_1699177255__0001
aggr1 online RW 862.3GB 818.7GB 0%
svm fg_oss_1699177255__0002
aggr1 online RW 862.3GB 818.7GB 0%
2 entries were displayed.
動作確認
動作確認をします。
S3ユーザーのアクセスキーとシークレットアクセスキーを登録します。
$ aws configure
AWS Access Key ID [None]: XEFD2323G5QAL53VC56C
AWS Secret Access Key [None]: <省略>
Default region name [None]: us-east-1
Default output format [None]: yaml
エンドポイントとしてSVMの管理エンドポイントを指定して、s3 ls
を叩いてみます。
$ aws s3 ls \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
SSL validation failed for https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1129)
証明書でエラーになりましたね。
サーバー証明書を検証できるようにCAの証明書をクライアントにインポートしてあげましょう。
# 証明書を配置するディレクトリの確認
$ ls -l /usr/share/pki/ca-trust-source/
total 2308
-rw-r--r--. 1 root root 937 Aug 15 18:20 README
drwxr-xr-x. 2 root root 6 Aug 15 18:22 anchors
drwxr-xr-x. 2 root root 6 Aug 15 18:22 blacklist
drwxr-xr-x. 2 root root 6 Aug 15 18:22 blocklist
-rw-r--r--. 1 root root 2357361 Aug 15 18:20 ca-bundle.trust.p11-kit
$ ls -l /usr/share/pki/ca-trust-source/anchors/
total 0
# CAの証明書を保存
$ sudo vi /usr/share/pki/ca-trust-source/anchors/svm_ca.pem
$ cat /usr/share/pki/ca-trust-source/anchors/svm_ca.pem
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
-----END CERTIFICATE-----
# 保存した証明書を信頼できるCAとして登録
$ sudo update-ca-trust extract
再度コマンドを実行してみます。
$ aws s3 ls \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
SSL validation failed for https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1129)
エラーは変わらずといったところです。
curl
でアクセスすると証明書によるエラーは特に発生していませんでした。
$ curl -v https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
* Trying 10.0.9.75:443...
* Connected to svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com (10.0.9.75) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
* CApath: none
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN: server did not agree on a protocol. Uses default.
* Server certificate:
* subject: CN=svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
* start date: Nov 6 01:15:00 2023 GMT
* expire date: Nov 9 01:15:00 2023 GMT
* subjectAltName: host "svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com" matched cert's "svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com"
* issuer: CN=svm_ca; C=US
* SSL certificate verify ok.
* using HTTP/1.x
> GET / HTTP/1.1
> Host: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
> User-Agent: curl/8.3.0
> Accept: */*
>
< HTTP/1.1 403 Forbidden
< Server: NetApp CSS/9.13.0P4
< Date: Mon, 06 Nov 2023 02:28:08 GMT
< Connection: Close
< Content-Length: 110
< Content-Type: application/xml
<
* Closing connection
* TLSv1.2 (IN), TLS alert, close notify (256):
* TLSv1.2 (OUT), TLS alert, close notify (256):
<?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message>Access Denied</Message></Error>
AWS CLIは/etc/pki/tls/certs/ca-bundle.crt
を参照していないのでしょうか。
s3 ls
実行時に--ca-bundle
で明示的に証明書のパスを指定してあげます。
$ aws s3 ls \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /usr/share/pki/ca-trust-source/anchors/svm_ca.pem
2023-11-05 09:41:02 ontap-s3-bucket
問題なく出力されました。
ファイルのアップロードができるか確認してみます。
# テキストファイルの作成
$ echo test-text > test-text.txt
# テキストファイルのアップロード
$ aws s3 cp test-text.txt s3://ontap-s3-bucket \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
upload: ./test-text.txt to s3://ontap-s3-bucket/test-text.txt
# アップロードしたテキストファイルが存在することを確認
$ aws s3 ls s3://ontap-s3-bucket \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
2023-11-06 01:31:26 10 test-text.txt
# アップロードしたテキストファイルの内容確認
$ aws s3 cp s3://ontap-s3-bucket/test-text.txt \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt \
-
test-text
問題なくできました。
また、このバケットではバージョニングを有効化しています。
削除しても削除マーカーが付与されて、古いバージョンとしてオブジェクトが残っていることを確認します。
# バージョニングされていることを確認
$ aws s3api list-object-versions \
--bucket ontap-s3-bucket \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
Versions:
- ETag: 6af7520dcba2e60003c69b5671e84fb4
IsLatest: true
Key: test-text.txt
LastModified: '2023-11-06T01:31:26.786000+00:00'
Size: 10
StorageClass: STANDARD
VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u
# オブジェクトを削除
$ aws s3 rm s3://ontap-s3-bucket/test-text.txt \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
delete: s3://ontap-s3-bucket/test-text.txt
# 削除マーカーが付与されたことを確認
$ aws s3api list-object-versions \
--bucket ontap-s3-bucket \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
DeleteMarkers:
- IsLatest: true
Key: test-text.txt
LastModified: '2023-11-06T01:43:41.866000+00:00'
VersionId: ODY2MjIyMDAwLnYxLjYuMTY5OTIzNTAyMS4u
Versions:
- ETag: 6af7520dcba2e60003c69b5671e84fb4
IsLatest: false
Key: test-text.txt
LastModified: '2023-11-06T01:31:26.786000+00:00'
Size: 10
StorageClass: STANDARD
VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u
なお、通常のONTAP S3のS3バケットに関連付くボリュームを削除する際は、バケット内の全てのオブジェクトを削除してあげる必要があります。
全てのオブジェクトを削除せずにボリュームを削除しようとするとCannot delete the volume because it is associated with one or more object store buckets. Please delete all object store buckets associated with the volume, and try again.
とエラーが出力されます。
バージョニングを有効化している場合は削除マーカーを含めて全て削除してあげる必要があるため要注意です。
対象バケットの全てのバージョンを削除するのは以下コマンドで行えます。
$ aws s3api delete-objects \
--bucket ontap-s3-bucket \
--delete "$(aws s3api list-object-versions --bucket ontap-s3-bucket --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com --ca-bundle /etc/pki/tls/certs/ca-bundle.crt --output json | jq '.Versions + .DeleteMarkers | {Objects: map({Key, VersionId})}')" \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
Deleted:
- Key: test-text.txt
VersionId: NjU2ODk0MDAwLnYxLjIuMTY5OTIzNTU3MC4u
- Key: test-text.txt
VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u
- Key: test-text.txt
VersionId: ODY2MjIyMDAwLnYxLjYuMTY5OTIzNTAyMS4u
Snapshotの取得やFlexCloneができないことも確認します。
# Snapshotの取得
::> snapshot create -vserver svm -volume fg_oss_1699177255 -snapshot ontap_s3_snapshot
Error: command failed: Unable to create Snapshot for object store volume "fg_oss_1699177255" on Vserver svm".
# FlexCloneのボリューム作成
::> volume clone create -vserver svm -flexclone fg_oss_1699177255_clone -type RW -parent-vserver svm fg_oss_1699177255
Error: command failed: Cannot create "flexClone" on volume "fg_oss_1699177255" in Vserver "svm", because the volume is
used by an object store server.
どちらも「オブジェクトストアサーバーのボリュームであるため」という理由でエラーになっていますね。
Data DualityなONTAP S3のS3バケットを作成してみる
SMB共有の作成
次にData DualityなONTAP S3のS3バケットを作成してみます。
下準備としてマッピングするボリュームに対してSMB共有を作成します。
# SMBサーバーの作成
::> cifs create -vserver svm -cifs-server smb-server -workgroup WORKGROUP
Notice: SMB1 protocol version is obsolete and considered insecure. Therefore it is deprecated and disabled on this CIFS server. Support for SMB1 might be removed in a future release. If
required, use the (privilege: advanced) "vserver cifs options modify -vserver svm -smb1-enabled true" to enable it.
# 作成したSMBサーバーの確認
::> cifs show
Server Status Domain/Workgroup Authentication
Vserver Name Admin Name Style
----------- --------------- --------- ---------------- --------------
svm SMB-SERVER up WORKGROUP workgroup
# SMB共有の作成
::> cifs share create -vserver svm -share-name share -path /vol1
# 作成したSMB共有の確認
::> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm ipc$ / browsable - -
svm share /vol1 oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
3 entries were displayed.
ONTAP S3のユーザーとSMBユーザーのネームマッピング
続いてONTAP S3のユーザーとSMBユーザーのネームマッピングです。
まず、ネームマッピング用にSMBユーザーを作成します。
# SMBユーザーの作成
::> cifs users-and-groups local-user create -vserver svm -user-name smb-user -is-account-disabled false
Enter the password:
Confirm the password:
# 作成したSMBユーザーの確認
::> cifs users-and-groups local-user show
Vserver User Name Full Name Description
------------ --------------------------- -------------------- -------------
svm SMB-SERVER\Administrator Built-in administrator account
svm SMB-SERVER\smb-user - -
2 entries were displayed.
S3ユーザーでアクセスしたときにSMBサーバーに変換して認可されるようにネームマッピングをします。
# ネームマッピングの作成
::> name-mapping create -direction s3-win -position 1 -pattern s3-user -replacement SMB-SERVER\\smb-user
(vserver name-mapping create)
# ネームマッピングの確認
::> name-mapping show
(vserver name-mapping show)
Vserver: svm
Direction: s3-win
Position Hostname IP Address/Mask
-------- ---------------- ----------------
1 - - Pattern: s3-user
Replacement: SMB-SERVER\\smb-user
::> name-mapping show -instance
(vserver name-mapping show)
Vserver: svm
Direction: s3-win
Position: 1
Pattern: s3-user
Replacement: SMB-SERVER\\smb-user
IP Address with Subnet Mask: -
Hostname: -
ONTAP S3のバケットの作成
ONTAP S3バケットを作成します。
作成する際にパスとしてSMB共有で指定したパスと同じものを指定します。
# ONTAP S3バケットの作成
::> object-store-server bucket create -vserver svm -bucket ontap-nas-bucket -type nas -nas-path /vol1
(vserver object-store-server bucket create)
# S3バケットの確認
::> object-store-server bucket show -bucket ontap-nas-bucket -instance
(vserver object-store-server bucket show)
Vserver: svm
Bucket :ontap-nas-bucket
Type :nas
Versioning :-
Uuid :8402a992-7c46-11ee-aba3-3702a2258335
Volume :vol1
Size :-
Logical Used Size :-
Object Count :-
Encryption :false
Comment :
Qos Policy Group :-
Role :-
Bucket Protected :-
Bucket Protected On ONTAP :-
Bucket Protected On Cloud :-
Bucket Protected on External Cloud :-
NAS Path :/vol1
Object Lock retention mode :-
動作確認
動作確認です。
s3 cp
でテキストファイルのアップロードができることを確認します。
$ aws s3 ls \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
2023-11-06 01:47:59 ontap-nas-bucket
2023-11-05 09:41:02 ontap-s3-bucket
$ aws s3 cp test-text.txt s3://ontap-nas-bucket \
--endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
--ca-bundle /etc/pki/tls/certs/ca-bundle.crt
upload: ./test-text.txt to s3://ontap-nas-bucket/test-text.txt
SMBクライアントからSMB共有をマウントして、s3 cp
でアップロードされたテキストファイルを確認します。
# SMBでマウント
> net use Z: \\svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com\share
The password is invalid for \\svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com\share.
Enter the user name for 'svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com': SMB-SERVER\smb-user
Enter the password for svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com:
The command completed successfully.
# マウントできたことを確認
> Get-PSDrive -PSProvider FileSystem
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
C 15.52 14.48 FileSystem C:\ Users\Administrator
Z 0.00 0.95 FileSystem \\svm-0093c4d58225f809b.fs-03e6b...
# ONTAP S3のS3バケットにアップロードしたファイルが存在していることを確認
> ls Z:\
Directory: z:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11/6/2023 1:55 AM 10 test-text.txt
# ファイルの内容の表示
> cat Z:\test-text.txt
test-text
問題なくできましたね。
データ分析の時に役立ちそう
Amazon FSx for NetApp ONTAPで、ONTAP S3 の マルチプロトコルアクセスを試してみました。
データ分析の時に役立ちそうですね。
現状、ONTAP S3とAWSの各サービスの親和性は正直高くないので、さまざまなサービスとの連携が進むと嬉しいですね。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!