diff --git a/changelogs/fragments/65608.yml b/changelogs/fragments/65608.yml
new file mode 100644
index 00000000000..198c5ee3c20
--- /dev/null
+++ b/changelogs/fragments/65608.yml
@@ -0,0 +1,2 @@
+bugfixes:
+  - azure_storageblob - use os.access to check for read rights.
diff --git a/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py b/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py
index 0833640cf6a..d77255d9cba 100644
--- a/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py
+++ b/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py
@@ -412,13 +412,10 @@ class AzureRMStorageBlob(AzureRMModuleBase):
     def src_is_valid(self):
         if not os.path.isfile(self.src):
             self.fail("The source path must be a file.")
-        try:
-            fp = open(self.src, 'r')
-            fp.close()
-        except IOError:
-            self.fail("Failed to access {0}. Make sure the file exists and that you have "
-                      "read access.".format(self.src))
-        return True
+        if os.access(self.src, os.R_OK):
+            return True
+        self.fail("Failed to access {0}. Make sure the file exists and that you have "
+                  "read access.".format(self.src))
 
     def dest_is_valid(self):
         if not self.check_mode: