This is an automated email from the ASF dual-hosted git repository.

pankaj pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new a3f0d83679 Add assume_role_kwargs in hashicorp backend config (#39279)
a3f0d83679 is described below

commit a3f0d836796c34d3643842f1674f1d5b04bb34bd
Author: Pankaj Singh <[email protected]>
AuthorDate: Sat Apr 27 11:09:11 2024 +0530

    Add assume_role_kwargs in hashicorp backend config (#39279)
    
    Add assume_role_kwargs in hashicorp backend config
    ```
    AIRFLOW__SECRETS__BACKEND_KWARGS='{"kv_engine_version": 1, "mount_point": 
"kv", "variables_path": "airflow", "url": "http://127.0.0.0:8200/";, 
"auth_type": "aws_iam", "assume_role_kwargs": {"RoleArn": 
"arn:aws:iam::1234567890000:role/hashicorp-aws-iam", "RoleSessionName": 
"airflow", "DurationSeconds": 900}}'
    ```
---
 airflow/providers/hashicorp/_internal_client/vault_client.py | 12 +++++++-----
 airflow/providers/hashicorp/secrets/vault.py                 |  8 +++++---
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/airflow/providers/hashicorp/_internal_client/vault_client.py 
b/airflow/providers/hashicorp/_internal_client/vault_client.py
index ffc338217a..a90188f996 100644
--- a/airflow/providers/hashicorp/_internal_client/vault_client.py
+++ b/airflow/providers/hashicorp/_internal_client/vault_client.py
@@ -74,7 +74,9 @@ class _VaultClient(LoggingMixin):
     :param key_id: Key ID for Authentication (for ``aws_iam`` and ''azure`` 
auth_type).
     :param secret_id: Secret ID for Authentication (for ``approle``, 
``aws_iam`` and ``azure`` auth_types).
     :param role_id: Role ID for Authentication (for ``approle``, ``aws_iam`` 
auth_types).
-    :param role_arn: AWS arn role (for ``aws_iam`` auth_type)
+    :param assume_role_kwargs: AWS assume role param.
+        See AWS STS Docs:
+        
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts/client/assume_role.html
     :param kubernetes_role: Role for Authentication (for ``kubernetes`` 
auth_type).
     :param kubernetes_jwt_path: Path for kubernetes jwt token (for 
``kubernetes`` auth_type, default:
         ``/var/run/secrets/kubernetes.io/serviceaccount/token``).
@@ -104,7 +106,7 @@ class _VaultClient(LoggingMixin):
         password: str | None = None,
         key_id: str | None = None,
         secret_id: str | None = None,
-        role_arn: str | None = None,
+        assume_role_kwargs: dict | None = None,
         role_id: str | None = None,
         kubernetes_role: str | None = None,
         kubernetes_jwt_path: str | None = 
"/var/run/secrets/kubernetes.io/serviceaccount/token",
@@ -163,7 +165,7 @@ class _VaultClient(LoggingMixin):
         self.key_id = key_id
         self.secret_id = secret_id
         self.role_id = role_id
-        self.role_arn = role_arn
+        self.assume_role_kwargs = assume_role_kwargs
         self.kubernetes_role = kubernetes_role
         self.kubernetes_jwt_path = kubernetes_jwt_path
         self.gcp_key_path = gcp_key_path
@@ -330,9 +332,9 @@ class _VaultClient(LoggingMixin):
         else:
             import boto3
 
-            if self.role_arn:
+            if self.assume_role_kwargs:
                 sts_client = boto3.client("sts")
-                credentials = sts_client.assume_role(RoleArn=self.role_arn, 
RoleSessionName="airflow")
+                credentials = sts_client.assume_role(**self.assume_role_kwargs)
                 auth_args = {
                     "access_key": credentials["Credentials"]["AccessKeyId"],
                     "secret_key": 
credentials["Credentials"]["SecretAccessKey"],
diff --git a/airflow/providers/hashicorp/secrets/vault.py 
b/airflow/providers/hashicorp/secrets/vault.py
index b29ae77461..2591c77652 100644
--- a/airflow/providers/hashicorp/secrets/vault.py
+++ b/airflow/providers/hashicorp/secrets/vault.py
@@ -74,7 +74,9 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
     :param key_id: Key ID for Authentication (for ``aws_iam`` and ''azure`` 
auth_type).
     :param secret_id: Secret ID for Authentication (for ``approle``, 
``aws_iam`` and ``azure`` auth_types).
     :param role_id: Role ID for Authentication (for ``approle``, ``aws_iam`` 
auth_types).
-    :param role_arn: AWS arn role,
+    :param assume_role_kwargs: AWS assume role param.
+        See AWS STS Docs:
+        
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts/client/assume_role.html
     :param kubernetes_role: Role for Authentication (for ``kubernetes`` 
auth_type).
     :param kubernetes_jwt_path: Path for kubernetes jwt token (for 
``kubernetes`` auth_type, default:
         ``/var/run/secrets/kubernetes.io/serviceaccount/token``).
@@ -108,7 +110,7 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
         key_id: str | None = None,
         secret_id: str | None = None,
         role_id: str | None = None,
-        role_arn: str | None = None,
+        assume_role_kwargs: dict | None = None,
         kubernetes_role: str | None = None,
         kubernetes_jwt_path: str = 
"/var/run/secrets/kubernetes.io/serviceaccount/token",
         gcp_key_path: str | None = None,
@@ -149,7 +151,7 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
             key_id=key_id,
             secret_id=secret_id,
             role_id=role_id,
-            role_arn=role_arn,
+            assume_role_kwargs=assume_role_kwargs,
             kubernetes_role=kubernetes_role,
             kubernetes_jwt_path=kubernetes_jwt_path,
             gcp_key_path=gcp_key_path,

Reply via email to