Load data from files in cloud storage using API Keys
In this post we
will see about how to use API keys for OCI user to authenticate the cloud
resources. Step#1 –
generate an API signing key Generate a
private key and pem format public key. In this example
the public and private key are stored in %HOME%\TESTKEY2 Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/Rajeshwaran $ cd /c/users/rajeshwaran/ Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran $ mkdir TESTKEY2 Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran $ cd TESTKEY2 Generating the
private key and ensuring that we can only read the private key file. Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran/TESTKEY2 $ openssl genrsa -out
oci_api_key.pem 2048 Generating RSA private key,
2048 bit long modulus (2 primes) ..............................................+++++ .....................................+++++ e is 65537 (0x010001) Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran/TESTKEY2 $ ls -ltr total 4 -rw-r--r-- 1 Rajeshwaran
197121 1702 Oct 21 19:05 oci_api_key.pem Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran/TESTKEY2 $ chmod go-rwx
oci_api_key.pem Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran/TESTKEY2 $ ls -ltr total 4 -rw-r--r-- 1 Rajeshwaran
197121 1702 Oct 21 19:05 oci_api_key.pem Generating the
public key Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran/TESTKEY2 $ openssl rsa -pubout -in
oci_api_key.pem -out oci_api_key_public.pem writing RSA key Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran/TESTKEY2 $ ls -ltr total 5 -rw-r--r-- 1 Rajeshwaran
197121 1702 Oct 21 19:05 oci_api_key.pem -rw-r--r-- 1 Rajeshwaran
197121460 Oct 21 19:06
oci_api_key_public.pem Generating the
key’s fingerprint Rajeshwaran@rajeyaba-3WH3DK3
MINGW64 /c/users/rajeshwaran/TESTKEY2 $ openssl rsa -pubout
-outform DER -in oci_api_key.pem | openssl md5 -c writing RSA key (stdin)=
d8:b3:74:c1:5c:76:51:5a:0b:5d:89:ce:25:46:ad:35 Step#2 –
creating an OCI user and public key for the user. Click on the
OCI Hamburger menu > Identity > users > create user. Then click on
the ‘API keys’ in the resource section to add the public key contents ( oci_api_key_public.pem
)
Once the public
key got dragged and dropped there, the API Key fingerprint will be generated
like this.
Step#3 –
connect to the database and create credentials using the private key like this demo-user@ATP19C> begin 2dbms_cloud.create_credential( 3credential_name =>'api_key_cred', 4user_ocid =>
'ocid1.user.oc1..aaaaaaaambmzgftlbzv2krf2cm7dismh35jmdzhrdh3rx4z4434atun7dlsa', 5tenancy_ocid =>
'ocid1.tenancy.oc1..aaaaaaaacogbjgqcpcgk4vtnwhi2binpz5buav3sidham4evvfu2fjixucaa', 6private_key =>'MIIEowIBAAKCAQEA0zUiWFszop1WIjWiKS3PzstuNbeSKffB3oyWuBID/xpQREKS 70it1+YoXo8jFAee9Ep6idM97AMkOp1L1/FoSyHBzs4qHqE4srRAnSwNUzaox/ATZ ........ ........ ........ 30khS6loArMh6vQOrpjmDjm3Mbu7kt4ROJHa2dwpSVKUiDmKXjMtb6', 31fingerprint =>'d8:b3:74:c1:5c:76:51:5a:0b:5d:89:ce:25:46:ad:35' ); 32end; 33/ PL/SQL procedure successfully
completed. Step#4 –
accessing the object storage file contents demo-user@ATP19C> exec
:filename :=
'https://objectstorage.us-ashburn-1.oraclecloud.com/n/idcglquusbz6/b/MY_DEMO_BUCKET/o/mycsvdemo.txt'; PL/SQL procedure successfully
completed. demo-user@ATP19C> exec
:uri := 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/'; PL/SQL procedure successfully
completed. demo-user@ATP19C> exec
:namespace := '********'; PL/SQL procedure successfully
completed. demo-user@ATP19C> select
object_name, bytes 2from
dbms_cloud.list_objects( 3'api_key_cred', 4:uri||:namespace||'/b/MY_DEMO_BUCKET/o/'); OBJECT_NAMEBYTES ------------------------------
---------- E1.DMP12288 E2.DMP12288 E3.DMP12288 File1.json55878 File2.json45992 File3.json484455 File4.json113873 File5.json2757 File6.json10612 mycsvdemo.txt933 10 rows selected. Above all the
steps are required to access the object storage contents using API Keys, but if
the step (2) was missing then it will return an error like this ORA-20401: Authorization
failed for URI -
https://objectstorage.us-ashburn-1.oraclecloud.com/n/********/b/MY_DEMO_BUCKET/o/ ORA-06512: at
"C##CLOUD$SERVICE.DBMS_CLOUD", line 1679 ORA-06512: at
"C##CLOUD$SERVICE.DBMS_CLOUD", line 9318 ORA-06512: at line 1
No comments:
Post a Comment